最近我在将文件上传到我的 Java gae 应用程序时遇到了两个问题。我正在使用blobstore doc中描述的技术。
- 对于常规文件,有时(假设 15% 的时间)客户端会收到“503 服务不可用”。
- 对于高分辨率图像(例如 7000x10000),客户端总是会收到“400 Bad Request”。
在服务器上的这两种情况下,都没有记录错误消息,blob 写入正确,但从不调用 successPath url(createUploadUrl的回调)。由于某些原因,处理上传的 GAE 端点似乎崩溃了。
我的客户端是一个 js XMLHttpRequest,包裹在 GWT 中:
public native void uploadWithXMLHttpRequest(UploadForm uploadForm) /*-{
var fd = new FormData();
var files = uploadForm.@mypackage.UploadForm::getFiles()();
for (var i = 0; i < files.length; i++) {
fd.append("uploadFile"+i, files[i]);
}
var xhr = new XMLHttpRequest();
//xhr.upload.addEventListeners... omitted
xhr.open("POST", uploadForm.@mypackage.UploadForm::getUploadUrl()());
xhr.send(fd);
}
关于可能的原因和解决方案/解决方法的任何想法?谢谢。