6

サンプルコードから、問題なく64MBをアップロードできます。

   myblob = open(r'task1.txt', 'r').read()
   blob_service.put_blob('mycontainer', 'myblob', myblob, x_ms_blob_type='BlockBlob')

より大きなサイズをアップロードしたい場合はどうなりますか?

ありがとうございました

4

3 に答える 3

3

数日前に同じ問題に遭遇しましたが、幸運にもこれを見つけることができました。ファイルをチャンクに分割してアップロードします。

これが役立つことを願っています。乾杯!

于 2013-06-03T14:21:48.917 に答える
1

これは良い質問です。残念ながら、任意の大きなファイルをアップロードするための実際の実装は見当たりません。そのため、本当に重要な何かを見逃していない限り、Python SDK でやるべきことはもっとたくさんあると思います。

ドキュメントで提供されているサンプル コードは、実際には 1 つのテキスト ファイルのみを使用し、一度にアップロードします。大きなファイルのアップロードをサポートするために、まだ実装されている実際のコードはありません ( SDK ソース コードで見たものから)。

したがって、Python から BLOB を操作するには、Azure Blob Storage のしくみを理解する必要があります。ここから始めてください

次に、 PutBlob 操作に関する REST API ドキュメントをざっと見てみましょう。備考に次のように記載されています。

ブロック BLOB の最大アップロード サイズは 64 MB です。BLOB が 64 MB を超える場合は、ブロックのセットとしてアップロードする必要があります。詳細については、Put Block (REST API) および Put Block List (REST API) 操作を参照してください。BLOB をブロックのセットとしてアップロードする場合は、Put Blob を呼び出す必要はありません。

幸いなことに、PutBlock と PutBlockList は Python SDK に実装されていますが、使用方法のサンプルは提供されていません。ファイルをそれぞれ最大 4 MB のチャンク (ブロック) に手動で分割する必要があります。次にput_block(self, container_name, blob_name, block, blockid, content_md5=None, x_ms_lease_id=None):、python SDK の関数を使用してブロックをアップロードします。最終的には、ブロックを並行してアップロードします。put_block_list(self, container_name, blob_name, block_list, content_md5=None, x_ms_blob_cache_control=None...ただし、アップロードされたすべてのブロックをコミットするには、最後にも実行する必要があることを忘れないでください。

残念ながら、私は Python の専門家ではありませんが、少なくとも状況の全体像はわかります。

于 2013-03-08T08:11:30.413 に答える