当前位置: 首页 > news >正文

成都seo优化推广重庆seo公司

成都seo优化推广,重庆seo公司,企业网站设计与优化,暖色网站模板点击上方蓝字关注“汪宇杰博客”我的博客使用 Azure Blob Storage 存储文章配图#xff0c;结果今天玩 Azure CDN 的时候爆了#xff0c;原因是图片mime type不对。我们来看看如何在 .NET Core 里批量重置 Azure Blob Storage 中文件的mime type吧。起因使用编程方式#xf… 点击上方蓝字关注“汪宇杰博客”我的博客使用 Azure Blob Storage 存储文章配图结果今天玩 Azure CDN 的时候爆了原因是图片mime type不对。我们来看看如何在 .NET Core 里批量重置 Azure Blob Storage 中文件的mime type吧。起因使用编程方式Azure Storage API上传的文件如果不指定 ContentType 那么 Azure 不会聪明到根据文件拓展名设置 ContentType 。这个 ContentType 最终就是输出给浏览器的HTTP Header中的content-type即Web服务器上的mime type。对于没有设置 ContentType 的文件直接访问 Azure Blob 的地址会返回application/octet-stream。不同浏览器对此处理方式不一样大部分浏览器会调用文件下载而不是打开文件。于是图片就没法显示了。我博客中的配图以前之所以没问题是因为没有使用CDN让客户端直接读取图片而是通过后台处理会自动加上正确的mime type因此这个问题一直没暴露。获取文件的 ContentType.NET Core 没有 MimeMapping.GetMimeMapping() 这个API因此我们需要一个workaround。感谢长沙.NET技术社区成员 刘命汉 的发现以及 周杰 的验证ASP.NET Core 自带的 FileExtensionContentTypeProvider 是个可替代方案。var pvd new FileExtensionContentTypeProvider();bool isKnownType pvd.TryGetContentType(test.png, out string mimeType);// mimeType: image/png对于不认识的拓展名TryGetContentType() 会返回 false | null而 CloudBlockBlob 不设置 ContentType 的话会返回默认的 application/octet-stream因此null不影响。更改文件的 ContentType对于已经上传到 Azure Blob Storage 的文件可以通过编程方式更改 ContentType 。获取到 CloudBlockBlob 对象以后设置 Properties.ContentType然后调用 SetPropertiesAsync() 方法保存更改即可。对于未上传到Azure的文件设置完 ContentType 以后不需要调用 SetPropertiesAsync() 上传操作 UploadFromStreamAsync() 会带上这些属性。参见我博客代码commit: https://github.com/EdiWang/Moonglade/commit/3508e35055ae33b2c2241d93f615283a109bad85自制开源工具我今天抽空写了个批量重置 Azure Blob Storage 文件Mime Type 的工具已在 GitHub 开源https://github.com/EdiWang/Azure-Blob-MimeType-Reset关键代码获取 CloudBlobContainer有了 CloudBlobContainer 才能遍历里面的文件private static CloudBlobContainer GetBlobContainer(){    CloudStorageAccount storageAccount new CloudStorageAccount(new StorageCredentials(Options.AccountName, Options.AccountKey), true);    CloudBlobClient blobClient storageAccount.CreateCloudBlobClient();    CloudBlobContainer container blobClient.GetContainerReference(Options.ContainerName);    return container;}修改ContentType此处我做了个判断只有 ContentType 不正确的文件才重置 ContentTypeprivate static CloudBlockBlob TrySetContentType(CloudBlockBlob blob, string contentType){    if (blob.Properties.ContentType.ToLower() ! contentType)    {        blob.Properties.ContentType contentType;        return blob;    }    return null;}遍历文件及提交更改var pvd new FileExtensionContentTypeProvider();WriteMessage($[{DateTime.Now}] Updating Mime Type...);int affectedFilesCount 0;foreach (var blob in BlobContainer.ListBlobs().OfTypeCloudBlockBlob()){    string extension Path.GetExtension(blob.Uri.AbsoluteUri).ToLower();    bool isKnownType pvd.TryGetContentType(extension, out string mimeType);    if (isKnownType)    {        if (TrySetContentType(blob, mimeType) ! null)        {            WriteMessage($[{DateTime.Now}] Updating {blob.Uri.AbsoluteUri} {mimeType});            await blob.SetPropertiesAsync();            affectedFilesCount;        }    }}参考文档http://www.thepatrickdavis.com/blob-storage-dont-forget-the-mime/
http://www.zqtcl.cn/news/26193/

相关文章:

  • 厦门优秀的网站设计德州百度推广公司
  • wordpress spam郑州网站seo公司
  • 网址的英文企业网站优化设计的含义
  • 网站推广包含哪些方法wordpress 大前端2.0
  • 中国建设网官方网站企业网银网站功能详细设计
  • 百度关键字怎么搜到公司网站内蒙古工程建设网站
  • 做网站不带优化的吗网站建设费计入销售费用的子目
  • 施工员证怎么查询网站百度做网站好吗
  • 上海网站建设 网站开发wordpress 主题 更新
  • 网站建设的毕业设计成果微信跳转链接生成器免费
  • 东营二手房出售信息网关键词排名优化品牌
  • 建设科技信息 网站建设c 手机网站开发工具
  • 洛阳做网站那家好怎么免费创造自己的网址
  • 北京做网站建设多少钱菏泽网架公司
  • 网站制作教程步骤公司要建立网站要怎么做
  • 温州阀门外贸网站建设教程网站建设
  • 小学学校网站上海建筑工程公司排行榜
  • 有限公司网站入口企业做网站电话约见客户的对话
  • 娄底网站优化成都成达设计院
  • 京东网站建设流程网站网页优化技巧
  • 做网站需要提供的资料东道设计公司官网首页
  • 网站如何制作做吸引客户软文推荐
  • 网站的安全怎么做网站的策划建设方案书
  • 学习怎样建网站阿里巴巴国际站怎么做网站模版
  • 广州网站推广找谁wordpress一直刷不出来
  • 网页制作流程视频360排名优化工具
  • 做一个门户网站要多少钱建站平台选择建议
  • 网站 优点英文网站怎么推广
  • eclipse可以做网站嘛seo网站提交
  • 国外的设计网站app用flash做游戏下载网站