django 文件上传在新版本的 azure blob 中不起作用

django file upload is not working in azure blob with new version

更新 azure blob 版本后,不会安装所有内容。它将在 blob 中安装特定版本的命名空间。所以我安装了以下软件包。

azure-common==1.1.25
azure-core==1.8.1
azure-nspkg==3.0.2
azure-storage-blob==12.4.0

我无法上传 blob。 SO 和其他平台中的所有引用都是针对旧版本的。对于新版本,没有参考。我得到的错误是

    from azure.storage.blob import BlobPermissions, ContentSettings
ImportError: cannot import name 'BlobPermissions' from 'azure.storage.blob'

如果我手动转到该路径并从导入编译中删除 BlobPermissions 就会发生。但是上传没有发生,上传时间我收到这个错误

connection_string=self.connection_string)
endpoint_suffix=self.endpoint_suffix)
TypeError: __init__() got an unexpected keyword argument 'token_credential'

任何人都可以帮助我使用新版本的 django azure 上传的正确文档。我在SO中得到的参考文献是手动上传的方式。

我在 SO 中得到的一些参考:

ImportError: cannot import name 'BlobPermissions' from 'azure.storage.blob'

BlobPermissions 用于旧版本。对于新版本,它已替换为 BlobSasPermissions


似乎 django.core.files.storage 不受 latest version(3.1). So you could use the older version(e.g. 2.1) to upload file using django, or just use azure-sdk 支持。

旧版本:

from django.core.files.storage import default_storage

f = open('file.csv', 'rb')
default_storage.save(path, f)

使用 Azure SDK:

from azure.storage.blob import BlobClient

blob = BlobClient.from_connection_string(conn_str="<connection_string>", container_name="my_container", blob_name="my_blob")

with open("file.csv", "rb") as data:
    blob.upload_blob(data)