You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell上传JSON至Azure Blob Storage时Content-Type设置失效问题

解决Azure Blob Storage上传JSON文件时Content-Type不正确的问题

你遇到的问题是上传JSON内容到Azure Blob后,Blob的Content-Type被默认设置为application/octet-stream,而非预期的application/json。原代码的问题在于多次调用GetBlockBlobReference生成了独立的Blob对象实例,导致后续设置属性的操作未正确关联到已上传的Blob。

修复方案1:上传前直接设置ContentType(推荐)

这种方式一步到位,无需额外调用SetProperties,同时可以规范地指定字符编码:

$Params = @{"URI" = 'https://myapiexample.com/api/data/'}
$Result = Invoke-RestMethod @Params | ConvertTo-Json

$context = New-AzStorageContext -StorageAccountName "mystorage" -StorageAccountKey ""
$container = Get-AzStorageContainer -Name "input" -Context $context

$content = [system.Text.Encoding]::UTF8.GetBytes($Result)
$blobpath = "azblob/mydata.json"

# 获取Blob引用并提前设置ContentType(包含UTF-8编码)
$blob = $container.CloudBlobContainer.GetBlockBlobReference($blobpath)
$blob.Properties.ContentType = "application/json; charset=utf-8"
$blob.UploadFromByteArray($content, 0, $content.Length)

修复方案2:复用Blob引用修复原代码逻辑

如果需要保留先上传再设置属性的流程,核心是复用同一个Blob对象实例,避免重复调用GetBlockBlobReference生成新对象:

$Params = @{"URI" = 'https://myapiexample.com/api/data/'}
$Result = Invoke-RestMethod @Params | ConvertTo-Json

$context = New-AzStorageContext -StorageAccountName "mystorage" -StorageAccountKey ""
$container = Get-AzStorageContainer -Name "input" -Context $context

$content = [system.Text.Encoding]::UTF8.GetBytes($Result)
$blobpath = "azblob/mydata.json"

# 保存Blob引用,后续操作复用该实例
$blob = $container.CloudBlobContainer.GetBlockBlobReference($blobpath)
$blob.UploadFromByteArray($content, 0, $content.Length)

# 复用同一个引用设置ContentType并保存属性
$blob.Properties.ContentType = "application/json; charset=utf-8"
$blob.SetProperties()

说明

  • 默认情况下,Azure Blob Storage会将未知类型的上传内容Content-Type设为application/octet-stream,因此需要显式指定。
  • 添加charset=utf-8符合JSON内容的编码规范,避免后续解析时出现编码问题。

内容的提问来源于stack exchange,提问作者paone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:50:50