ファイルの内容をそのまま送信したいorg.apache.http.entity.mime.MultipartEntity
。問題は、実際にはファイルではなく、コンテンツのみがString
. 次のテストは完全に機能します。file
はjava.io.File
有効な png ファイルを指しています。
MultipartEntity entity =
new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("source", new StringBody("computer"));
entity.addPart("filename", new FileBody(file, "image/png"));
HttpPost httpPost = new HttpPost(URL);
httpPost.setEntity(entity);
HttpClient httpClient = new DefaultHttpClient();
final HttpResponse response = httpClient.execute(httpPost);
System.out.println(EntityUtils.toString(response.getEntity()));
後で、実際のファイルはなく、そのコンテンツのみがString
. エンコーディングについてはよくわかりませんが(何も言うまでもありません)、次の方法で作成された一時ファイルで同じアプローチを試してみると
String contents = FileUtils.readFileToString(new File(path),"UTF8");
File tmpFile = File.createTempFile("image", "png");
tmpFile.deleteOnExit();
InputStream in = new ByteArrayInputStream(contents.getBytes("UTF8"));
FileOutputStream out = new FileOutputStream(tmpFile);
org.apache.commons.io.IOUtils.copy(in, out);
はpath
、最初のコード ブロックで成功したのとまったく同じ png ファイルを指していますが、今回は
画像のアップロードに失敗しました。フォーマットがサポートされていません
サーバーからのエラー。エンコーディングと関係があると思われます。誰かが私が間違っていた明らかなことを見ていますか?