サンプルコードから、問題なく64MBをアップロードできます。
myblob = open(r'task1.txt', 'r').read()
blob_service.put_blob('mycontainer', 'myblob', myblob, x_ms_blob_type='BlockBlob')
より大きなサイズをアップロードしたい場合はどうなりますか?
ありがとうございました
サンプルコードから、問題なく64MBをアップロードできます。
myblob = open(r'task1.txt', 'r').read()
blob_service.put_blob('mycontainer', 'myblob', myblob, x_ms_blob_type='BlockBlob')
より大きなサイズをアップロードしたい場合はどうなりますか?
ありがとうございました
数日前に同じ問題に遭遇しましたが、幸運にもこれを見つけることができました。ファイルをチャンクに分割してアップロードします。
これが役立つことを願っています。乾杯!
これは良い質問です。残念ながら、任意の大きなファイルをアップロードするための実際の実装は見当たりません。そのため、本当に重要な何かを見逃していない限り、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 の専門家ではありませんが、少なくとも状況の全体像はわかります。