【问题标题】:Unable to download blobs from azure blob storage无法从 Azure Blob 存储下载 Blob
【发布时间】:2019-09-05 11:12:55
【问题描述】:

我正在尝试从 azure blob 的子目录下载 blob。我只能下载几个文件,但剩下的就是抛出 "HTTP status code=416, Exception=The range specified is invalid for the current size of the resource. ErrorCode: InvalidRange" 。我可以直接从 azure 下载 blob,但以编程方式只下载了几个

【问题讨论】:

  • 欢迎来到本站。请添加有关您当前 python 实现的更多详细信息。
  • 请添加代码以及您想要完成的具体内容。虚拟文件夹或容器中的 blob 是否还指定了要下载的 blob 的任何范围/大小限制?

标签: python azure-blob-storage


【解决方案1】:

当我尝试下载一个空的 blob 时,我收到了这个错误。使用彼得潘的代码,你需要添加一个空的检查。

blob_info = blob_service.get_blob_properties(container_name, blob_name)
if blob_info.properties.content_length == 0:
    return "empty blob"

【讨论】:

    【解决方案2】:

    这里是关于你的错误的描述,存储服务请参考官方文档Common REST API Error Codes。

    由于您的描述中没有任何代码,我将示例代码发布在此处作为参考。

    from azure.storage.blob.baseblobservice import BaseBlobService
    
    import os
    
    account_name = '<your account name>'
    account_key = '<your account key>'
    
    blob_service = BaseBlobService(
        account_name=account_name,
        account_key=account_key
    )
    
    container_name = '<your container name, such as `test`'
    
    # Virtual Directory Name as the prefix string of a blob name
    prefix = '<the blob name prefix, such as `images`>' 
    
    # local directory path for downloading blobs
    local_path = '<a local directory path for downloading, such as `download`>' 
    
    blobs = blob_service.list_blobs(container_name, prefix=prefix)
    
    for blob in blobs:
        blob_name = blob.name
        blob_base_name = os.path.basename(blob_name)
        file_path = '%s/%s' % (local_path, blob_base_name)
        blob_service.get_blob_to_path(container_name, blob_name, file_path)
    

    希望对你有帮助。

    【讨论】:

    • 谢谢,但我明白了
    【解决方案3】:

    对于长度为零的 blob,您很可能会遇到这些异常。在这里(用于 Python 问题的 Microsoft Azure 存储 SDK:https://github.com/Azure/azure-storage-python/issues/586)他们说您可以安全地忽略这些异常 - 捕获并吞下。此类文件仍可正确下载:

    我相信当您尝试下载长度为零的 blob 时会显示此错误。您可以通过在尝试下载之前检查 blob 属性来绕过它,或者只是让它发生 - 无论如何都会下载文件。

    我验证过,如果吞下这些异常,可以确认零长度文件下载正确。

    【讨论】:

      猜你喜欢
      • 2019-12-19
      • 1970-01-01
      • 2012-12-08
      • 2016-02-29
      • 2021-12-08
      • 2018-11-21
      • 2015-06-20
      相关资源
      最近更新 更多