首先,我使用此代码将照片保存到 Android 的 SD 卡:
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream outStream = null;
currentFilename = String.format("%d", System.currentTimeMillis());
outStream = new FileOutputStream("/sdcard/" + currentFilename + ".jpg");
outStream.write(data);
outStream.close();
}
};
然后我使用此代码在 Android 设备上上传照片:
public void uploadPhoto() {
try {
// Create HttpPost
HttpPost post = new HttpPost("http://www.example.com/upload.php");
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE );
// Add the Picture as "userfile"
entity.addPart( "userfile", new FileBody(
new File( "/sdcard/", currentFilename + ".jpg" ),
"image/jpeg")
);
// Send the data to the server
post.setEntity( entity );
client.execute( post );
} catch (Exception e) {
// catch
} finally {
// finally
}
}
这适用于我运行 Android 2.2.2 的 LG Optimus V 和运行 Android 2.3.4 的 Droid X
但是 - 一位拥有运行 2.3.4 的 HTC Evo(与我的 Droid X 相同)的用户正在经历她上传的所有照片在保存到她的手机时(以及当它们到达服务器时)都被打乱了。图像看起来像一组锯齿状的彩色线条。
关于这里可能发生的事情以及可以采取哪些措施来解决问题的任何想法?
更新:
我能够访问这部手机,当我从 sdcard 中提取 jpg 文件时,它说文件大小为 3.5 - 4.0 MB,但它们无法打开并且可能已损坏......但另一个文件电话正常工作。