首页 > 解决方案 > 如何将文件上传到 Azure Blob 存储?

问题描述

我需要每天从本地系统将文件上传到 azure blob 容器。我使用 azcopy 和 sas 来做这件事。但我遇到的是容器的 SAS 在每次刷新时都会不断变化。那么有没有更好的方法可以使用 python 或 azcopy 上传文件。或者有什么方法可以在没有登录的情况下从天蓝色获取 SAS 令牌并将该 SAS 令牌传递给 azcopy 命令?截至目前,我从 azcopy 使用此命令

.\azcopy "Sourcefilepath" "Destblobpath?SAS_Token" --recurcive=true

每天我都应该登录到 azure 获取 SAS 令牌并通过上述命令。我试过 .\azcopy 登录,我登录成功,但我无法发送文件

.\azcopy "Sourcepath" "Destpath"

不知道我哪里做错了。

标签: pythonazureazure-blob-storageazcopy

解决方案


如果您使用的是 python,我建议您使用 azure python sdk 进行上传。您可以从这里的示例中看到更多...

https://github.com/Azure-Samples/storage-blob-python-quickstart/blob/master/example.py

它可以像这样快(来自快速入门文档:https ://docs.microsoft.com/en-us/python/api/overview/azure/storage?view= azure-python)与您的 azure blob 交互存储帐户。只需放入一些逻辑以递归方式遍历目录并上传每个文件。

首先确保 pip 安装所需的软件包,然后从门户中获取您的帐户名称(blob 存储名称)和访问密钥...插入它们就可以了。

pip install azure-storage-blob azure-mgmt-storage

然后在这里写一些python代码...

from azure.storage.blob import BlockBlobService, PublicAccess

blob_service = BlockBlobService('[your account name]','[your access key]')

blob_service.create_container(
    'mycontainername',
    public_access=PublicAccess.Blob
)

blob_service.create_blob_from_bytes(
    'mycontainername',
    'myblobname',
    b'hello from my python file'
)

print(blob_service.make_blob_url('mycontainername', 'myblobname'))

这应该会让你很快朝着正确的方向前进。


推荐阅读