2016-07-10 4 views
0

私はSPIのGoogleエンドポイントを持っています。たとえば、MultipartFile fileを受け入れるために使用するアノテーションの例は見つかりませんか?GAEエンドポイントで画像をアップロードするために使用するアノテーションはどれですか?

@ApiMethod(name = "saveNewBill" , 
      httpMethod = ApiMethod.HttpMethod.POST) 
public Bill saveBillImage(@Named("content") MultipartContent f){ 
     Bill bill = new Bill(); 
     return bill; 
    } 

答えて

1

EDIT:ブロブストアに関連するいくつかの他のものの上に読みながら、私はちょうどGoogleは今、メディアのサービス提供のためにGoogleのクラウドストレージの代わりに、ブロブストアを使用することをお勧めしますこと、気づきました。

App Engineでエンドポイントを使用しているので、BlobStoreを使用する必要があります。

App Engineでの画像のアップロード、保存、取得を処理するのが好ましい方法です。

BlobstoreServiceの次の機能はアップロードURLを生成します。このURLは、画像データがfileという名前で渡された標準マルチパートリクエストを使用してアップロードされます。

BlobstoreServiceFactory.getBlobstoreService().createUploadUrl("/[servlet name goes here]"); 

アップロードが完了した後にリクエストがリダイレクトされるサーブレットの名前を指定する必要があります。このサーブレットは、新しく作成されたBlobstoreアイテムにアクセスして、意味のある何かを行うことができます。たとえば、画像のサービスURLを取得してクライアントに返します。ここで

はちょうどそれを行うサーブレットの抜粋です:

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

      List<BlobKey> blobs = blobstoreService.getUploads(req).get("file"); 
      BlobKey blobKey = blobs.get(0); 

      ImagesService imagesService = ImagesServiceFactory.getImagesService(); 
      ServingUrlOptions servingOptions = ServingUrlOptions.Builder.withBlobKey(blobKey); 
      servingOptions.secureUrl(true); 
      String servingUrl = imagesService.getServingUrl(servingOptions); 

      res.setStatus(HttpServletResponse.SC_OK); 
      res.setContentType("text/plain"); 

      PrintWriter out = res.getWriter(); 
      out.print(servingUrl); 
      out.flush(); 
      out.close(); 
    } 

あなたはまた、サーブレットで読み取ることができますアップロードURLに独自のいくつかのクエリ文字列パラメータを追加することができます。これは、ブロブストアでのより深い一見のため

など特定のエンティティにblobKeyにを取り付けるようなもののために有用であることができ、私はRominイラニのApp Engineのチュートリアルからの次の記事をお勧めします。私が見る https://rominirani.com/episode-13-using-the-blobstore-java-api-56423cf6a1b#.6t95vziul

+0

ああを!ありがとうございました。それは完璧な意味合いです。 –

関連する問題