restful

Trả về tập tin hình ảnh hoặc PDF với RESTEasy

Mình đang làm một RESTful server, dùng RESTEasy trên Java.

Server này sẽ lưu trữ các tập tin như hình ảnhPDF vào trong CSDL.

Yêu cầu là khi đánh các request lên trình duyệt:

@Path("media")
@Stateless
public class MediaRestService {
    private final static org.slf4j.Logger log = LoggerFactory.getLogger(MediaRestService.class);
    @EJB
    private ThumbnailServices thumbnailService;
    @EJB
    private DocumentServices docServices;


    @Path("document/{id}/thumbnail")
    @GET
    @Produces("image/jpg")
    public Response findThumbnail(@PathParam("id") String id) {
            // Read the content of file from DB.
            String base64Content = thumbnailService.getThumbnail(id);
            byte[] imageData = IOUtils.convertToBytesFromBase64(base64Content,"jpg");

           return Response.ok(new ByteArrayInputStream(imageData)).build();
    }

    @GET
    @Path("document/{id}/file")
    @Produces("application/pdf")
    public Response findDocumentPDF(@PathParam("id") String documentId) {
        byte[] bytes = null;
        // Read the content of file from DB.
        bytes = org.apache.commons.io.IOUtils.toByteArray(docServices.fileContent(documentId));

        return Response.ok(new ByteArrayInputStream(bytes)).build();
    }
}

Nguyên tắc:

  • Set header trả về là kiểu tập tin image/jpg, application/pdf ... bằng @Produces("")
  • Dữ liệu trả về dưới dạng nhị phân Response.ok(new ByteArrayInputStream(bytes)).build();

Sau đó trình duyệt sẽ tự động hiển thị tập tin.

Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration