我想发送一个文件的内容为org.apache.http.entity.mime.MultipartEntity
。问题是,我没有真正的文件,但只有内容为String
。下面的测试工作完全,其中file
是java.io.File
指向有效的PNG文件:发送虚拟文件为MultipartEntity
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文件的临时文件相同的做法,成功在第一个代码块但这次我得到一个
无法上传图像;格式不支持
错误来自服务器。我怀疑是与编码有关。有人看到我做错了什么显而易见的事吗?
似乎 “内容” 是一个二进制文件,不是可以转换为字符串的东西 – morgano