1
我在android中使用以下函数,但在拨打uploader.upload()
时出现错误“500 Java Heap Space”。如何使用MediaHttpUploader将图像上传到BlobStore?
如果我叫uploader.setDirectUploadEnabled(true)
uploader.upload()
之前,我得到错误“411长度要求”对upload()
而不是错误500
public static String uploadImage(Context context, String file, MediaHttpUploaderProgressListener progressListener)
throws Exception {
// The file is something like : /mnt/sdcard/wallpapers/image.jpg
File mediaFile = new File(file);
HttpTransport transport = new NetHttpTransport();
HttpRequestFactory factory = transport.createRequestFactory(null);
//obtain the upload url
GenericUrl getUploadUrl = new GenericUrl(Util.getBaseUrl(context)
+ "/myapp/blobservice?get-key");
HttpRequest request = factory.buildGetRequest(getUploadUrl);
HttpResponse response1 = request.execute();
String postUrl = convertStreamToString(response1.getContent()).trim();
// the returned post url when using the development server is something like : //http://192.168.1.4:8888/_ah/upload/agd5YWRnZXQychwLEhVfX0Jsb2JVcGxvYWRTZXNzaW9uX18Y2wUM
InputStreamContent mediaContent = new InputStreamContent("image/jpeg",
new BufferedInputStream(new FileInputStream(mediaFile)));
mediaContent.setLength(mediaFile.length());
MediaHttpUploader uploader = new MediaHttpUploader(mediaContent,transport, null);
uploader.setProgressListener(progressListener);
//the following line produces exception "500 Java heap space" on the local server
//on the remote server I get "500: Internal server error"
HttpResponse response = uploader.upload(new GenericUrl(postUrl));
if (!response.isSuccessStatusCode()) {
throw new Exception("Uploading image failed.");
} else {
String blobKey = convertStreamToString(response.getContent()).trim();
return blobKey;
}
}
由于错误发生在服务器端,因此应该在产生错误的日志和服务器代码中提供错误条目。 – 2012-08-22 08:44:02
也许这可能有所帮助:http://stackoverflow.com/questions/15704816/google-app-engine-use-blobkey/15896876#15896876尽管它不能用MediaHttpUpload回答你的问题,但它显示了一个工作代码来上传图片容易与Resteasy – 2013-04-22 17:31:47