0

我在尝试上传文件时收到该错误。我在下面有一个代码,我收到了No MessageBodyWriter for body part of type 'java.io. File' and media type 'application/octet-stream'异常。我昨天一整天都试图解决这个问题,但没有成功。

File file = new File(path);

    ClientConfig cc = new DefaultClientConfig();
    cc.getClasses().add(MultiPartWriter.class);
    Client client = Client.create(cc);

    WebResource webResource = client.resource(Constants.URL).path("images")
            .path("create");; 
    FormDataMultiPart fdmp = new FormDataMultiPart(); 

    fdmp.bodyPart(new FileDataBodyPart("filename", file, MediaType.APPLICATION_OCTET_STREAM_TYPE));
    fdmp.bodyPart(new FormDataBodyPart("data", imageData));

    ClientResponse response = webResource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(ClientResponse.class, fdmp); 

我尝试了其他一些版本,但我不断收到该异常。有什么建议吗?:)

4

2 回答 2

0

What about:

ClientConfig cc = new DefaultClientConfig();
Client client = Client.create(cc);
WebResource resource = client.resource("http://sample.com/uploadpath");
FormDataMultiPart form = new FormDataMultiPart();
File file = new File("c:/temp/file.txt");
form.field("filename", file.getName());
form.bodyPart(new FileDataBodyPart("file", file, MediaType.MULTIPART_FORM_DATA_TYPE));

ClientResponse response = resource.type(MediaType.MULTIPART_FORM_DATA).post(ClientResponse.class, form);
于 2013-02-24T10:08:46.847 回答
0

终于我找到了解决办法!!我在android上遇到了这个问题

只需添加以下代码:

导入 com.sun.jersey.core.impl.provider.entity.InputStreamProvider;导入 com.sun.jersey.core.impl.provider.entity.StringProvider;......

ClientConfig cc = new DefaultClientConfig();
cc.getClasses().add(StringProvider.class);///////// here is the magic :)
cc.getClasses().add(InputStreamProvider.class);////
cc.getClasses().add(MultiPartWriter.class);////////

WebResource webResource = Client.create(cc).resource("www......");

FormDataMultiPart multiPart = new FormDataMultiPart();
multiPart.field("bla", "bla bla", MediaType.APPLICATION_JSON_TYPE);

ClientResponse response = webResource.
            type(MediaType.MULTIPART_FORM_DATA).
            post(ClientResponse.class,multiPart);
于 2015-07-23T09:48:12.777 回答