2

BlobStore に関する Google App Engine 公式サイトのドキュメントをググって読みましたが、まだ理解できない問題がいくつかあります。私のプラットフォームは webapp です。

私が読んだドキュメント:

これらのドキュメントをすべて読んだ後でも、まだいくつかの問題があります。

  1. Blobstore Python API Overviewには、1 回の API 呼び出しでアプリが読み取ることができる Blobstore データの最大サイズは 1MB と書かれています。これは何を意味するのでしょうか?この 1MB の制限は に適用されsendblob()ますか? 例として、webapp Blobstore Handlersから次のコードを取り上げます。

    class ViewPhotoHandler(blobstore_handlers.BlobstoreDownloadHandler):
        def get(self, photo_key):
            self.send_blob(photo_key)
    

    に関連付けられている写真 (ブロブストアにアップロードされて保存される) は1 MBphoto_key未満でなければならないということですか? 文脈から、私はそうは思いません。写真のサイズは2GBほどになると思います。しかし、よくわかりません。

  2. ContentType はどのように決定されsend_blob()ますか? text/html ですか、それとも image/jpeg ですか? 自分でどこかに設置できますか?webapp Blobstore Handlersからの次の説明は非常に紛らわしいです。非英語話者にとってはかなり難しい。誰かがコードサンプルで言い換えることができますか? のドキュメントはどこにありsend_blob()ますか? 私はそれを見つけることができません。

    send_blob() メソッドは、blob データを生の応答データとして送信するか、ファイル名付きの MIME 添付ファイルとして送信するかを決定する save_as 引数を受け入れます。これにより、Web ブラウザーは、ファイルを表示する代わりに、指定された名前でファイルを保存するように求められます。引数の値が文字列の場合、BLOB は添付ファイルとして送信され、文字列値がファイル名として使用されます。True で blob_key_or_info が BlobInfo オブジェクトの場合、オブジェクトのファイル名が使用されます。デフォルトでは、BLOB データは MIME 添付ファイルとしてではなく、応答の本文として送信されます。

  3. 20MB または 2GBのファイルhttp://www.example.com/example.aviがあります。インターネットから example.avi を取得し、BlobStore に保存したいと考えています。確認したところ、urlfetchリクエストのサイズ制限は 1MB です。検索しても解決策が見つかりませんでした。

どうもありがとう!

4

1 に答える 1

2
  1. send_blob()アプリケーションが API からファイルを読み取る必要がないため、1 MB の制限は適用されません。ユーザーに応答を返すフロントエンド サービスは、BLOB 全体を読み取り、そのすべてを応答で返します (ほとんどの場合、読み取りはチャンクで行われますが、これは実装の詳細であり、気にする必要はありません。

  2. send_blob()コンテンツ タイプを、Blob の内部に格納されたタイプ、またはオプションのcontent_typeパラメータで指定したタイプに設定しsend_blob()ます。ドキュメントについては、RTFS が必要なようです。docstring があります (google.appengine.ext.webapp.blobstore_handlersパッケージ内)。

  3. Web から任意のファイルを取得して Blobstore に保存するための優れたソリューションは実際にはありません。ほとんどの場合、ファイルを取得してアプリケーションの blobstore ハンドラーに POST するために、自分のマシンや EC2 インスタンスなど、別の場所でサービスを実行する必要があります。

于 2011-07-04T21:38:52.550 に答える