做淘宝这种网站,深圳楼市最新消息,dw网页设计模板100套,网站开发费用计入科目点击上方蓝字关注“汪宇杰博客”导语前不久我写了一篇《尝鲜新版 Azure .NET SDK》之后#xff0c;使用了一段时间发现没爆#xff0c;于是今天决定把博客的图片存储从旧版 SDK 迁移到新版 SDK#xff0c;结果小收福报。Content-Type上传到 Azure Blob 的文件必须设置正确的… 点击上方蓝字关注“汪宇杰博客”导语前不久我写了一篇《尝鲜新版 Azure .NET SDK》之后使用了一段时间发现没爆于是今天决定把博客的图片存储从旧版 SDK 迁移到新版 SDK结果小收福报。Content-Type上传到 Azure Blob 的文件必须设置正确的 Content-Type Mime Type要不然就会加班收福报曾经在我的《.NET Core 批量重置 Azure Blob Storage 的 mime type》解释过。因此以下代码需要迁移到新版SDK。var blockBlob _container.GetBlockBlobReference(fileName);// Why .NET Core doesnt have MimeMapping.GetMimeMapping()string extension Path.GetExtension(blockBlob.Uri.AbsoluteUri);switch (extension.ToLower()){ case .jpg: case .jpeg: blockBlob.Properties.ContentType image/jpeg; break; case .png: blockBlob.Properties.ContentType image/png; break; case .gif: blockBlob.Properties.ContentType image/gif; break; default: break;}await using (var fileStream new MemoryStream(imageBytes)){ await blockBlob.UploadFromStreamAsync(fileStream);}新版 SDK 的上传方法很简单根据 GitHub 的 Readme一般是这样的// Get a reference to a blob named sample-file in a container named sample-containerBlobClient blob container.GetBlobClient(blobName);// Upload local fileblob.Upload(filePath);传送门https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs/README.md#uploading-a-blob那么 ContentType 去哪儿了我一开始以为它现在能自动根据拓展名设置 ContentType结果传上去的全是 application/octet-stream爆到天上去。新版 SDK 的文档和教程很少Bing 没有什么卵用。996了半小时后最终在官网的 API Reference 里找到了疑似对象BlobHttpHeaders.ContentType传送门https://docs.microsoft.com/en-us/dotnet/api/azure.storage.blobs.models.blobhttpheaders.contenttype?WT.mc_idAZ-MVP-5002809viewazure-dotnet而 BlobClient 的 Upload 方法正好有个重载能接受 BlobHttpHeaders 参数于是我实验了一下居然成功了BlobClient blob _container.GetBlobClient(fileName);// Why .NET Core doesnt have MimeMapping.GetMimeMapping()var blobHttpHeader new BlobHttpHeaders();string extension Path.GetExtension(blob.Uri.AbsoluteUri);switch (extension.ToLower()){ case .jpg: case .jpeg: blobHttpHeader.ContentType image/jpeg; break; case .png: blobHttpHeader.ContentType image/png; break; case .gif: blobHttpHeader.ContentType image/gif; break; default: break;}await using (var fileStream new MemoryStream(imageBytes)){ var uploadedBlob await blob.UploadAsync(fileStream, blobHttpHeader);}现在上传到 Azure Blob 里的文件能够获得正确的 Content-Type 信息。