【问题标题】:How to upload a blob into azure storage container with sub directories using the python sdk?如何使用 python sdk 将 blob 上传到带有子目录的 azure 存储容器中?
【发布时间】:2020-08-15 14:45:10
【问题描述】:

我一直在关注这篇文章:Quickstart: Manage blobs with Python v12 SDKContainerClient.upload_blob 的文档

这是上传具有此目录结构的 blob 的 sn-p:testcontainer / backup / HelloWorld.cab

bsc = BlobServiceClient.from_connection_string('<connection-string>')
cc = bsc.get_container_client('testcontainer')
cc.upload_blob(name='testcontainer/backup/HelloWorld.cab', data=open(r"\\network\path\to\backup\HelloWorld.cab", 'rb').read())

但我收到以下错误。关于我做错了什么有什么想法吗?

azure.storage.blob._generated.models._models_py3.StorageErrorException: Operation returned an invalid status 'The specifed resource name contains invalid characters.'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python3\lib\site-packages\azure\core\tracing\decorator.py", line 83, in wrapper_use_tracer
    return func(*args, **kwargs)
  File "C:\Python3\lib\site-packages\azure\storage\blob\_container_client.py", line 836, in upload_blob
    blob.upload_blob(
  File "C:\Python3\lib\site-packages\azure\core\tracing\decorator.py", line 83, in wrapper_use_tracer
    return func(*args, **kwargs)
  File "C:\Python3\lib\site-packages\azure\storage\blob\_blob_client.py", line 496, in upload_blob
    return upload_block_blob(**options)
  File "C:\Python3\lib\site-packages\azure\storage\blob\_upload_helpers.py", line 153, in upload_block_blob
    process_storage_error(error)
  File "C:\Python3\lib\site-packages\azure\storage\blob\_shared\response_handlers.py", line 147, in process_storage_error
    raise error
azure.core.exceptions.HttpResponseError: The specifed resource name contains invalid characters.
RequestId:71cad76d-801e-0097-8068-1fc9e0000000
Time:2020-05-01T03:28:33.5320153Z
ErrorCode:InvalidResourceName
Error:None

注意:我也看到了这个answer这个问题:Microsoft Azure: How to create sub directory in a blob container

【问题讨论】:

    标签: python azure-blob-storage


    【解决方案1】:

    如果我使用无效的资源名称(这是错误消息告诉您的内容),我能够重现此问题。

    例如,如果我使用 testcontainer 作为我的 blob 容器名称(这是正确的),我可以上传 blob。

    但是,如果我使用 testContainer 作为我的 blob 容器名称(这是无效的,请注意大写的“C”),我会收到与您遇到的相同的错误。

    请检查 blob 容器的名称和 blob。请参阅此链接了解 blob 资源的命名约定:https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata

    【讨论】:

    • 该错误是由于容器名称中的拼写错误。而不是test-assets,我输入的是tests-asset
    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 2019-10-01
    • 2020-04-03
    • 2023-01-31
    • 2020-03-29
    • 2020-01-09
    • 2021-06-20
    • 2019-12-01
    相关资源
    最近更新 更多