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

どうですか:

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 に答える