Tôi đang cố gắng tải hình ảnh lên bằng dịch vụ web Jersey, tôi đang sử dụng ứng dụng khách áo để tải hình ảnh lên. dưới đây là dịch vụ web jersey đưa inputstream và tải lên hình ảnh trên máy chủ. nó hoạt động tốt khi tôi trực tiếp gọi nó là sử dụng jsp upload hình thức nhiều phần dữ liệu nhưng không thành công khi tôi tải lên hình ảnh sử dụng jersey clientKhách hàng tải lên hình ảnh Jersey
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) throws ServiceException
{
// upload code
}
Dưới đây là Jersey Client để upload hình ảnh, mã khách hàng là một phần của một dịch vụ web được gọi là từ php khách hàng phần còn lại và áo khách hàng này gọi dịch vụ web jersey để tải lên hình ảnh, nếu tôi trực tiếp gọi dịch vụ web jersey để tải lên hình ảnh hoạt động tốt nhưng nó không hoạt động khi tôi tải lên bằng cách sử dụng ứng dụng khách.
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.setChunkedEncodingSize(1024);
WebResource wr = client
.resource("http://localhost:8080/rest/upload");
String contentDisposition = "attachment; filename=\""
+ fileDetail.getName() + "\"";
FormDataMultiPart form = new FormDataMultiPart();
ContentDisposition contentDisposition2 = new ContentDisposition(contentDisposition);
form.setContentDisposition(contentDisposition2);
FormDataBodyPart fdp = new FormDataBodyPart("file",
uploadedInputStream, MediaType.MULTIPART_FORM_DATA_TYPE);
form.bodyPart(fdp);
ClientResponse response = wr.type(MediaType.MULTIPART_FORM_DATA).post(
ClientResponse.class, form)
Hãy giúp tôi không chắc chắn những gì tôi đang thiếu ở đây. Cảm ơn.
Bạn có thể làm rõ những gì "không làm việc" có nghĩa? Tôi đã thử nghiệm với mã chính xác của bạn, sử dụng loại 'FileInputStream' cho' uploadedInputStream' và nó hoạt động tốt. Một điều tôi sẽ thay đổi (mặc dù nó không làm cho nó thất bại đối với tôi) là 'MediaType.MULTIPART_FORM_DATA_TYPE' cho' fdp' đến 'MediaType.APPLICATION_OCTET_STREAM_TYPE' –
Tôi có nghĩa là nó đang chuyển uploadInputStream sang dịch vụ web jersey nhưng nó không chứa cùng khối và cùng loại nội dung mà chúng tôi đã chuyển từ ứng dụng khách trên áo. –
biểu mẫu dữ liệu là loại nội dung chính của yêu cầu. Nhưng dữ liệu biểu mẫu đi kèm với các bộ phận và mỗi phần có loại nội dung riêng. Tệp phải là octet-stream và không phải là dữ liệu mẫu –