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

.NET Core WebAPI上传Azure Blob保留原始ContentType问题求助

解决Azure Blob上传时ContentType被重置的问题

嘿,这个问题我之前也踩过坑!你现在的代码只是把文件流上传到Blob,但没有指定文件的原始Content-Type,所以Azure Blob默认会用application/octet-stream作为 fallback 类型。

要保留原始的image/jpeg这类MIME类型,只需要在上传时通过BlobUploadOptions设置对应的HTTP头就可以了,IFormFile已经帮你拿到了文件的原始ContentType,直接用就行。

修改后的代码如下:

[HttpPost]
public async Task<string> Post(IFormFile files)
{
    BlobClient blobClient = _containerClient.GetBlobClient(files.FileName);
    
    // 配置上传选项,指定原始ContentType
    var uploadOptions = new BlobUploadOptions
    {
        HttpHeaders = new BlobHttpHeaders
        {
            ContentType = files.ContentType
        }
    };
    
    await blobClient.UploadAsync(files.OpenReadStream(), uploadOptions);
    // 返回Blob的URI方便后续使用
    return blobClient.Uri.ToString();
}

补充说明:

  • IFormFile.ContentType是客户端上传时传递的MIME类型,大部分业务场景下都是准确的;
  • 如果遇到少数客户端没有正确传递ContentType的情况,你还可以通过文件名后缀来推断MIME类型(比如借助System.Web.MimeMapping.GetMimeMapping(files.FileName)这类方法),不过常规场景下直接用files.ContentType就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:17:53