5

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

  1. 对于常规文件,有时(假设 15% 的时间)客户端会收到“503 服务不可用”。
  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);
}

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

4

4 回答 4

1

这个问题正在由另一个有同样问题的用户打开的 GAE 票证中讨论:https ://code.google.com/p/googleappengine/issues/detail?id= 7619(顺便说一句,错误跟踪系统有一个“开始” 功能,可让您投票并接收通知)

于 2012-06-01T00:50:48.867 回答
0

尝试使用 Google Cloud Storage,因为 blob 存储服务有很多问题,所以 google 正在尝试将使用从 Blob 迁移到 GCS 支持

我猜应用引擎 blob 商店中的图像分辨率不能超过 8000,这就是它造成的原因。

于 2013-08-07T14:40:46.717 回答
0

可能的原因:

1 您上传大文件 (> 1MB) 并将其全部写入。你应该把它写成portal:1 write = 1MB。

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

于 2012-05-24T12:43:10.450 回答
0

在这种情况下,503 是由我们将上传信息写入您的数据存储区时的错误引起的。当您使用 M/S 数据存储时,可能会不时出现瞬态错误。我建议您将您的应用程序转换为 HRD,以最大程度地减少与将上传信息写入数据存储区相关的错误的可能性。

400 错误是由您的应用程序生成的,并且在您的应用程序日志中。

于 2012-05-24T16:27:52.397 回答