6

Blobstore を利用してプログラムで生成されたデータを保存する Google App Engine アプリケーションを作成しました。そのために、私はFiles APIを使用しましたが、残念ながら Google Cloud Storage を支持して廃止されました。そのため、GCS で動作するようにヘルパー クラスを書き直しています。

また、ファイルへの参照を保持するためにデータストアに BlobKey を保持しているため (また、実稼働アプリケーションのモデルを変更するのは常に面倒です)、以前と同じようにインターフェイスを可能な限り維持したいと考えています。何かを GCS に保存するときに、BlobKey を取得します

BlobKey blobKey = blobstoreService.createGsBlobKey("/gs/" + fileName.getBucketName() + "/" + fileName.getObjectName());

ここで規定されているように、データストアに永続化します。

ドキュメントには、サーブレット応答で GCS ファイルを提供する方法が記載blobstoreService.serve(blobKey, resp);されていますが、ファイルの内容を (InputStream、バイト配列などとして) 取得して、コードで使用してさらに処理するにはどうすればよいですか? 私の現在の実装では、 (両方とも非推奨)FileReadChannelからの読み取りでそれを行います。AppEngineFile

4

4 に答える 4

0

アップロード ハンドラ (fileInfo.gs_object_name) でのみ cloudstorage ファイル名を取得し、データベースに保存できます。その後は失われ、BlobInfo やその他のメタデータ構造に保存されていないようです。

Google のコメント: BlobInfo メタデータとは異なり、FileInfo メタデータはデータストアに保持されません。(blob キーもありませんが、後で必要に応じて create_gs_key を呼び出して作成できます。) gs_object_name をアップロード ハンドラーに保存する必要があります。そうしないと、このデータが失われます。

申し訳ありませんが、これは python リンクですが、Java で同様のものを簡単に見つけることができます。 https://developers.google.com/appengine/docs/python/blobstore/fileinfoclass

于 2013-10-28T14:43:43.577 に答える