1

Android、iPhone、および Web クライアントから Google アプリ エンジンに画像をアップロードする非常に基本的な機能を実装しようとしています。このブログのおかげで、実装の初期バージョンを作成しました。

ただし、画像のアップロードには常に 2 段階のプロセスがあるようです。

  1. createUploadUrl() を使用して、POST への初期アップロード URL を取得します。私が使用するコードの断片を添付しています:
    public class CreateUploadUrl extends HttpServlet {

    @オーバーライド
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
        String uploadURL = blobstoreService.createUploadUrl("/image/uploadImage");
        resp.setContentType("テキスト/プレーン");
        resp.getWriter().println(uploadURL);
    }
}

  1. 「取得」したばかりの URL を使用して画像を投稿します
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        BlobKey blobKey = ParameterExtractor.getBlobParameter(req, "blob-key", blobstoreService);
        if (blobKey == null) {
            log.info("blob ID が null です。POST に失敗しました");
        } そうしないと {
            log.info("ze ビジネス ロジック");
        }
    }

私の質問は、現在すべてのクライアントが http GET を実行してアップロード URL を取得し、次に http POST を実行して画像を POST する必要があるため、1 つのステップでそれを実行できるかどうかです。

定義済みの URL を使用して 1 つの Http POST を実行することはできませんか?

ありがとうラジャット

4

2 に答える 2

1

This is possible, with limitations. You can bypass the UploadUrl mechanism by creating blobs directly in your servlet using the (currently experimental) createNewBlobFile API. In your mobile app(s) create an HTTP request encoded as multipart/form-data, and teach your servlet how to decode such a thing (consult e.g. How to upload files in JSP/Servlet?). Be aware that HTTP requests are limited to 32MB; with form encoding the amount of binary data you can upload will be less than that.

于 2012-06-05T20:46:17.063 に答える
0

確かに、単一の POST でそれを行うことができます。たとえば、ID を持つユーザーがいるとします。このユーザーは画像を選択し、クライアント側で POST 画像データとユーザー データを送信します。

サーバー側 (GAE) には、画像アップロード用の URL (your_host/imageUpload) と、リクエストからデータを読み取って Blobstore に書き込むサーバーまたは Spring コントローラーがあります。

于 2012-06-05T09:45:22.913 に答える