2

使用 Python3 请求模块和PUT Blob Azure Rest API将文件上传到 Azure 存储:

file_name = "testfile.txt"
url = f"https://<storageaccount>.blob.core.windows.net/test/{file_name}?sv=<SASTOKEN>"
with open(file_name, 'rb') as data:
    headers = {
        'x-ms-version': '2019-02-02',
        'x-ms-date': 'Mon, 30 Mar 2020 17:20:00 GMT',
        'x-ms-blob-type': 'BlockBlob',
        'x-ms-access-tier': 'Cool'
    }

    response = requests.put(
        url, 
        data=data,
        headers=headers
    )
    print(f"Response {response}")

这适用于有内容的文件。但是,当尝试上传一个空文件时,我得到一个400响应代码。如何上传空文件?

4

1 回答 1

1

如果要上传空文件,则应删除方法data=data中的requests.put()

print("**begin**")
with open(file_name,'rb') as data:
    headers = {
        'x-ms-version': '2019-02-02',
        'x-ms-date': 'Fri, 03 Apr 2020 07:16:17 GMT',
        'x-ms-blob-type': 'BlockBlob',
        'x-ms-access-tier': 'Cool'
    }

    response = requests.put(
        url, 
        headers=headers
    )
    print(response.status_code)
    print(response.content)

print("**done**")

而且,您可以有条件地使用requests.put()带/不带的方法data=data。首先,在您的代码中,检查文件的长度,如果为零,则可以使用requests.put()不带data=data;的方法 如果长度大于零,则requests.put()使用data=data.

希望它能有所帮助。

于 2020-04-03T08:29:23.727 回答