【发布时间】:2015-12-26 04:02:57
【问题描述】:
我正在使用 Azure Python SDK 将图像文件作为 Azure Block Blob 上传。我想使用“put_block_blob_from_bytes”方法,而不是“put_block_blob_from_file”方法。
我在最后一行代码中收到以下错误:
"UnicodeDecodeError 未被用户代码处理 消息:'ascii' 编解码器无法解码位置 0 中的字节 0x89:序数不在范围内(128)“
似乎我需要在某处将内容编码更改为“utf-8”,但我无法确定将其放入“put_block_blob_from_bytes”的方法签名中的正确位置。
我试过了,但仍然收到同样的错误:
blob_service.put_block_blob_from_bytes("testcontainer", "myimage.png", data, 0, None, "utf-8")
这是完整的代码示例。注意:为了发布,我删除了存储帐户名称和密钥。
from azure.storage.blob import BlobService
azureStorageAccountName = "" # REMOVED for this question
azureStorageAccountKey = "" # REMOVED for this question
with open("c:\\temp\\image.png", "rb") as f:
data = f.read()
blob_service = BlobService(account_name=azureStorageAccountName, account_key=azureStorageAccountKey)
blob_service.put_block_blob_from_bytes("testcontainer", "myimage.png", data)
谢谢!
【问题讨论】:
-
我刚刚在我的计算机(它是一台 Windows 8 机器)上的一个文件中尝试了相同的代码,它工作得很好。你能分享更多细节吗?如SDK版本等
-
谢谢高拉夫!我运行“pip install azure --upgrade”,将错误消息更改为容器不存在;然后我添加了 blob_service.create_container("testcontainer"),再次运行它,它工作了。
-
我刚刚确认容器问题无关。所以根本原因是我有一个较旧的 SDK 有问题。