Python生成JSON上传Azure Blob后,如何设置Content Type为application/json?
解决Azure Blob存储中JSON文件Content Type设置为application/json的问题
json.dumps仅负责把Python对象序列化成JSON格式字符串,它不会控制文件的Content Type——这个属性是Azure Blob的元数据,必须在上传Blob时显式指定,或者对已上传的Blob修改元数据才能生效。
上传时直接设置Content Type
如果使用azure-storage-blob SDK(v12版本,当前主流),可以在调用upload_blob或upload_file方法时指定content_type参数:
情况1:直接上传JSON字符串
from azure.storage.blob import BlobClient import json # 你的已处理数据 json_document = [ { "URL":"http://myexample.net", "domain":"abc", "domainSerialId":"skdksj12391ncjsacn", "proxy":"myexample.net" }, { "URL":"http://myexample.org", "domain":"def", "domainSerialId":"sakdjsaye132978ejwdnwd", "proxy":"myexample.org" } ] # 序列化为JSON字符串 json_str = json.dumps(json_document, ensure_ascii=False) # 初始化Blob客户端 blob_client = BlobClient.from_connection_string( conn_str="你的Azure存储连接字符串", container_name="目标容器名", blob_name="output.json" ) # 上传时指定Content Type为application/json blob_client.upload_blob(json_str, content_type='application/json', overwrite=True)
情况2:上传本地JSON文件
如果先把数据写入本地文件再上传,同样可以在upload_file时指定参数:
# 先将数据写入本地JSON文件 with open('local_output.json', 'w', encoding='utf-8') as f: json.dump(json_document, f, ensure_ascii=False) # 上传文件并设置Content Type blob_client.upload_file('local_output.json', content_type='application/json', overwrite=True)
修改已上传Blob的Content Type
如果已经上传了Content Type错误的Blob,无需重新上传,直接更新元数据即可:
# 更新已存在Blob的Content Type blob_client.set_http_headers(content_type='application/json')
核心逻辑:Content Type是Azure Blob的HTTP头属性,和JSON字符串本身无关,必须显式指定才能覆盖默认的application/octet-stream。
内容的提问来源于stack exchange,提问作者paone
相关产品推荐
相关产品推荐

