有人可以告诉我尝试将图像上传到 blob 存储时做错了什么吗?下面是我的代码。
print(type(img['image'])) #Output is <class 'bytes'>
connection_string = get_blob_connection_string()
blob_service_client = BlobServiceClient.from_connection_string(connection_string)
blob_client = blob_service_client.get_blob_client(container="images", blob=img['id'])
exists = blob_client.exists()
if (exists == False):
result = blob_client.upload_blob(img['image'], blob_type="blockblob")
print(result)
插入 blob 时,会抛出错误
quote_from_bytes() 预期字节
这个错误没有意义,我给了它字节。我错过了什么?
从我这边复制后,我也收到了同样的问题。由于文件类型不兼容(即文件格式),您收到此错误。
将以下行更改为正确的格式后,我可以实现您的要求。
blob_client = blob_service_client.get_blob_client(container="images", blob=img['id'])
以下是正确的格式
blob_client=blob_service_client.get_blob_client(container='container', blob='<LOCAL FILE PATH>');
下面是对我有用的完整代码
from azure.storage.blob import BlobServiceClient
from PIL import Image
connection_string = "<CONNECTION STRING>"
blob_service_client = BlobServiceClient.from_connection_string(connection_string)
blob_client=blob_service_client.get_blob_client(container='container', blob='<LOCALPATH>');
with open(file='<PATH IN YOUR STORAGE ACCOUNT WITH FILE NAME>', mode="rb") as data:
blob_client.upload_blob(data)
结果:
BlobServiceClient.get_blob_client
提供 Path
对象 作为 blob 名称(blob
参数)。在这种情况下,您必须自己进行转换以串接:
file_path = Path("my_path")
blob_client = blob_service_client.get_blob_client(container="my_container", blob=str(file_path))
ContainerClient.get_blob_client
、ContainerClient.upload_blob
以及可能其他相关方法也会出现同样的错误。