最近、Java Gae アプリにファイルをアップロードする際に 2 つの問題が発生しました。私は blobstore docで説明されている手法を使用しています。
- 通常のファイルでは、ときどき (たとえば 15% の場合)、クライアントは "503 Service Unavailable" を受け取ります。
- 高解像度の画像 (例: 7000x10000) では、クライアントは常に「400 Bad Request」を受け取ります。
どちらの場合も、サーバーのエラー メッセージはログに記録されず、BLOB は正しく書き込まれますが、successPath URL ( createUploadUrlのコールバック) は呼び出されません。アップロードを処理する GAE エンドポイントが何らかの理由でクラッシュするようです。
私のクライアントは、GWT でラップされた js XMLHttpRequest です。
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);
}
考えられる原因と解決策/回避策のアイデアはありますか? どうも。