0

1.8.2 SDK を使用して Google App Engine で新しいプロジェクトを作成しました。

ファイル アップローダーを構築しようとしていますが、ファイル アップローダーはローカルで正常に動作します。デプロイしてアップロードを試みた後、次のエラーが発生します。

POST http://test2.website.appspot.com/_ah/upload/AMmfu6bj08dli8J-kL3D_xdt…cQ6YCoQx3NC1s4If-C2J1moqV7Lg/ALBNUaYAAAAAUhExcSNKV9D3-0TadzZaCtssmKinnP5T/ 
503 (Service Unavailable) _ah/upload/AMmfu6bj08dli8J-kL3D_xdthBPw4H3jir2X86RQ3dQPlV5LukvcH9t7OP8dK147…6YCoQx3NC1s4If-C2J1moqV7Lg/ALBNUaYAAAAAUhExcSNKV9D3-0TadzZaCtssmKinnP5T/:1

GAE と Google Cloud Storage の両方で課金を有効にしました。

アップロード URL を生成するために使用しているコードは次のとおりです。

public static String getUploadUrl(HttpServletRequest req) {
        String bucket = "website-uploads";
        BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
        UploadOptions uploadOptions = UploadOptions.Builder.withGoogleStorageBucketName(bucket);
        return blobstoreService.createUploadUrl("/upload", uploadOptions);
    }

マルチパート投稿を処理するために通常のサーブレットを使用しています。

public void doPost(HttpServletRequest req, HttpServletResponse res)
            throws IOException, ServletException {

        if (!SH.isLoggedIn(req)){
            SH.redirectPage(req, res, 200, "/login");
            return;
        }

        BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
        Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(req);
        List<BlobKey> keys = blobs.get("file");     

        if (keys != null && keys.size() > 0) {
            BlobKey blobKey = keys.get(0);
            SH.setAttribute(req, "blobKey", blobKey.getKeyString());
        } else {
            SH.setAttribute(req, "uploadError", "An error occurred while uploading ...");
        }

        SH.setAttribute(req, "uploadUrl", getUploadUrl(req));
        SH.gotoPage(req, res, 200, JSP.pageUpload);
    }

そして、私のフォームは送信を行います:

<form id='uploadForm' action="${uploadUrl}" method="POST" enctype="multipart/form-data" >
    <input id="imageUploader" name="file" type="file" />
    <input type="submit" name="submitBtn" value="Upload" />
</form> 

オン/オフ パネルを見ると、クラウド ストレージが有効になっているように見えます。 ここに画像の説明を入力

私のコードに何か問題がありますか、それとも Google が修正する必要があるものですか?

アップデート:

Lipis のコメントに基づいて、必要な権限を追加しました。

ここに画像の説明を入力

4

1 に答える 1

3

アプリケーションに対して Google Cloud Storage から許可を与えていないと思います。

ドキュメントからステップ番号 5を使用し、実際にそれを使用していない場合は非推奨の部分をスキップしてください。他の場所で指示が見つかりませんでした。

于 2013-08-19T01:23:12.307 に答える