12

標準の Google App Engine のcreate_upload_url()プロセスを介して以前にアップロードされた BlobKey でいっぱいのデータベースがあり、引数を設定することで、それぞれのアップロードが同じ Google Cloud Storage バケットに送られましたgs_bucket_name

私がやりたいのは、既存のブロブキーをデコードして、Google Cloud Storage ファイル名を取得できるようにすることです。FileInfo クラスのgs_object_nameプロパティを使用できたことは理解していますが、次の点は例外です。

gs_object_name をアップロード ハンドラに保存しないと、このデータが失われます。(GCS のオブジェクトのその他のメタデータは GCS に自動的に保存されるため、アップロード ハンドラに保存する必要はありません。

つまりgs_object_name、プロパティはアップロード ハンドラでのみ使用できます。その時点でプロパティを保存していなければ、失われます。

また、create_gs_key()は代わりに Google ストレージのファイル名を取り、blobkey を作成するため、トリックを行いません。

では、以前にアプリ エンジンを介して Google Cloud Storage バケットにアップロードされた blobkey を取得し、その Google Cloud Storage ファイル名を取得するにはどうすればよいでしょうか? (パイソン)

4

3 に答える 3

6

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

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

https://developers.google.com/appengine/docs/python/blobstore/fileinfoclass

更新: Blobstore-Viewer: "encoded_gs_file:base64-encoded-filename-here" で SDK-BlobKey をデコードできました。ただし、実物は base64 でエンコードされていません。

create_gs_key(filename, rpc=None) ... Google は次のように述べています。「暗号化された blob キーを文字列として返します。」これが暗号化されている理由を誰かが推測していますか?

于 2013-10-29T10:07:26.957 に答える
0

blobKeys がある場合は、ImagesServiceFactory を使用できます。makeImageFromBlob

于 2014-01-21T18:19:15.667 に答える