关于在Google App Engine中上传图片的503和400

beb*_*ebo 5 google-app-engine

最近我在将文件上传到我的Java gae应用程序时遇到了两个问题.我正在使用blobstore doc中描述的tecnique.

  1. 对于常规文件,偶尔(比如15%的时间)客户端会收到"503 Service Unavailable".
  2. 对于高分辨率图像(例如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);
}
Run Code Online (Sandbox Code Playgroud)

有关可能原因和解决方案/解决方法的任何想法?谢谢.

ale*_*y28 0

可能的原因:

1 您上传大文件 (> 1MB) 并将其全部写入。你应该这样写:1 次写入 = 1MB。

2 您的请求需要超过 30 秒 - 使用后端。