Azure Blob Storage同名文件传不同文件夹报BlobAlreadyExists错误求助
Azure Blob 上传报 BlobAlreadyExists 错误的解决办法
问题说明
要上传多个名为data的文件到Azure Blob,打算给每个文件创建独立虚拟文件夹存放,但运行代码时一直触发<Code>BlobAlreadyExists</Code>错误,相关代码如下:
blob_service_client = BlobServiceClient.from_connection_string(connection_string) blob_client = blob_service_client.get_blob_client(container=container_name+'\\'+id+'\\'+uploadnr, blob=filename) with open(pathF+filename,"rb") as data: blob_client.upload_blob(data) print(f"Uploaded {filename}.")
解决思路
修正路径分隔符:Azure Blob的虚拟文件夹路径使用正斜杠
/,而非代码中的反斜杠\。你当前把id和uploadnr拼到了容器名称里,导致所有文件实际被传到了同一个错误路径下,自然会触发冲突。正确写法是将虚拟路径放在blob参数中:blob_client = blob_service_client.get_blob_client( container=container_name, blob=f"{id}/{uploadnr}/{filename}" )允许覆盖现有Blob:即便路径正确,若目标位置已存在同名文件,默认的
upload_blob方法会抛出错误。可以通过添加overwrite=True参数强制覆盖:blob_client.upload_blob(data, overwrite=True)提前检查Blob是否存在(可选):如果不想覆盖现有文件,可以先判断目标Blob是否存在,再执行对应逻辑:
if not blob_client.exists(): blob_client.upload_blob(data) print(f"Uploaded {filename}.") else: print(f"{filename} already exists in {id}/{uploadnr}/, skip upload.")
内容的提问来源于stack exchange,提问作者Kano
相关产品推荐
相关产品推荐

