7

エラー

原因: java.lang.IllegalStateException: BLOB アップロード コールバック要求から呼び出す必要があります。com.google.appengine.api.blobstore.BlobstoreServiceImpl.getUploads (BlobstoreServiceImpl.java:169) で

コード

public class UserUploadProfilePictureResource extends ServerResource {

    @Post
    public void handleBlobstoreUpload(Representation entity) {

        Representation rep =null;

        if (entity !=null) {

            if (MediaType.MULTIPART_FORM_DATA.equals(entity.getMediaType(), true)) {
                Request restletRequest = getRequest();
                HttpServletRequest servletRequest = ServletUtils.getRequest(restletRequest);

                BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();

                Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(servletRequest);

可能な解決策(しかし、私が望んでいないこと)

初め。2 番目の HttpServlet を呼び出したくありません。

2番。この投稿に関しては、ファイルを手動で書き込む解決策があります。

Google は次のように述べています。

非推奨: ファイルを Blobstore に書き込むためにここで使用されている Files API 機能は、Google Cloud Storage にファイルを書き込み、Blobstore を使用してそれらを提供することを優先して、将来的に削除される予定です。

可能なSolution2(ただし、回避策の概念のみ)

http://www.cloudave.com/1055/the-new-google-app-engine-blobstore-api-first-thoughts/

Bret Slatkin は、API がファイルのアップロードに使用される POST URL を作成するときに、潜在的なスニッフィングを軽減する一意のワンタイム URL を作成すると述べています。

これは、ユーザーが送信する Web フォームをレンダリングするシナリオに最適です。ただし、ファイルのアップロードを可能にする REST API を提供しようとしている場合 (たとえば、TwitPic のようなものを考えてみてください)、状況が難しくなります。この場合、Web フォームが行うことをシミュレートする独自のレンダリングを作成する必要があります (ファイルを取得し、ランダムな POST URL を作成し、それを呼び出します…)。

質問

Google App Engine に画像を保存する最善の方法は何ですか? ブロブストアよりも良い方法はありますか? ブロブストアに画像を保存するにはどうすればよいですか?

4

1 に答える 1