.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
相关产品推荐
相关产品推荐

