老实说 - 我从来没有将图像从 Android 上传到 IIS 网络服务,但在所有其他情况下,我总是只使用File
. 创建文件并将其上传为MultipartEntity
. 另外,您避免了必须一起使用Base64
,这很好,因为它可以为您节省大约 33% 的使用Base64
.
private File createFileFromBm(Bitmap pic){
File f = new File(context.getCacheDir(), "image");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
pic.compress(CompressFormat.JPEG, 100, bos);
byte[] data = bos.toByteArray();
try{
FileOutputStream fos = new FileOutputStream(f);
fos.write(data);
fos.close();
} catch (IOException e){
Log.e(TAG, e.toString());
}
return f;
}
以下是您如何创建一个MultipartEntity
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE;
entity.addPart("photo", new FileBody(file, "image/jpeg"));
httpPost.setEntity(entity);
return httpClient.execute(httpPost, responseHandler);
我使用了一个HttpPost
here 和 aBasicResponseHandler
来接收JSON
来自服务器的输出进行处理,但你可以做任何你喜欢的事情。