簡體   English   中英

Python Azure blob存儲上傳文件大於64 MB

[英]Python Azure blob storage upload file bigger then 64 MB

從示例代碼中,我可以上傳64MB,沒有任何問題:

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

如果我想上傳更大的尺寸怎么辦?

謝謝

幾天前我遇到了同樣的問題,很幸運能找到這個 它將文件分成塊並上傳給您。

我希望這有幫助。 干杯!

我不是Python程序員。 但是我可以提供一些額外的提示(我的東西都在C中):

根據文件的需要,對任意數量的塊(每個4MB)使用HTTP PUT操作(comp = block選項),然后使用合並塊的最終PUT塊列表(comp = blocklist選項)。 如果您的阻止上傳失敗或您需要中止,則刪除先前上傳的部分阻止組的清除是您要創建的文件的DELETE命令,但這僅顯示在2013-08-15版本中(某人)從Azure支持應該確認這一點)。

如果您需要添加元信息,那么在使用阻止列表方法時,我會執行額外的PUT操作(使用comp =元數據前綴)。 可能有一種更有效的方式來標記元信息而無需額外的PUT,但我不知道它。

這是個好問題。 不幸的是,我沒有看到上傳任意大文件的真實實現。 所以,從我看到的Python SDK還有很多工作要做,除非我遺漏了一些非常重要的東西。

文檔中提供的示例代碼確實只使用一個文本文件並立即上傳。 目前還沒有實現的代碼(我在SDK源代碼中看到的)支持上傳更大的文件。

因此,對於您來說,要使用Python中的Blob,您需要了解Azure Blob存儲的工作原理。 從這里開始

然后快速瀏覽一下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的專家,可以幫助你進一步,但至少我給你一個很好的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM