多年来,从一开始的网络菜鸟发展成 Azure 云专家,想必你一定学到了很多知识。不知道在这个过程中你自己是否遇到过,或者被人问到过类似下面这样的问题:

  • 同样是直接点击网页上提供的 .mp4 视频文件链接,有些网站会下载,有些网站会在浏览器里直接播放,这是如何实现的?

  • 能否把在浏览器里播放的视频改为默认下载到用户电脑上?

  • 点击一个 .rar 文件链接,为啥没有下载,而是在浏览器里显示了一大堆乱码?

请教高手就会知道,这都是 Web 服务器的 MIME 设置决定哒。类似这样的问题,只要修改 MIME 设置就行。

MIME 是什么?

互联网媒体类型(Internet Media Type,也称 MIME 类型或内容类型)是给互联网上传输的内容赋予的一种两段式的分类类型。浏览器会通过 MIME 这个参数决定对某些文件的处理方式,比如下载、调用播放器打开,或直接在浏览器中打开。错误的 MIME 设置可能会使浏览器错误地处理文件,例如下载本应该直接打开的视频文件,或点击链接后报错。

感觉是个很难懂的概念,但如果把这个概念和电脑上的「文件关联」结合在一起想就比较简单了。

当我们在电脑上双击一个文件时,系统会调用默认关联的程序打开这个文件。例如双击一个 .docx 文档,自动使用 Word 打开;双击照片,自动使用看图软件打开。

而 MIME,也可以理解为网页浏览器/服务器与不同类型文件之间建立的文件关联。

如果没有设置正确的文件关联,那么在访问某些文件时就会遇到各种不同结果。

例如在电脑上,双击打开一个未知扩展名的文件,可能会这样:

如果用浏览器访问一个 MIME 设置有误的文件,则可能会产生各种非预期的行为,例如本应由浏览器下载的 .rar 压缩文件,被直接显示了二进制字符串内容;或者本来希望用户下载到本地的视频,直接在浏览器里播放了。

为了让通过网络访问的每种类型文件表现出与预期一致的行为,MIME 设置很重要。

很多有网站运维经验的童鞋对不同 Web 服务器该如何设置 MIME 已经非常熟悉啦。但在上云之后,将文件存储到 Azure Blob 存储中,此时该如何设置正确的 MIME?

首先,你必须得是 Azure Blob 存储的管理员!毕竟需要修改重要设置嘛,总不能随随便便一个最终用户就能随意修改的。

其次,需要先看看默认设置能否满足要求。

Azure Blob 存储支持大部分常见的 MIME 类型,并会将媒体类型配置保存在文件的内容类型(Content type)字段中。在将文件上传至 Azure Blob 存储时,如果没有特别设置内容类型,Azure 存储默认会给该文件赋予进制文件的内容类型。

如果默认设置无法满足需求,必须修改呢?方法有两种:

1

上传文件时选择要使用的类型

通过 Azure 存储传输工具 AzCopy 或管理工具 Azure Storage Explorer(Windows/Mac)上传到 Blob 存储的文件,都会通过分析文件的后缀名,被自动加上正确的内容类型。

如果是通过自定义代码上传文件,可以引用 .Net Framework 4.5 BCL 库中的System.Web.MimeMapping 类,或在代码中加入 MIME 类型词典进行媒体类型的判断(第三方代码,仅供参考)。

2

修改已上传内容的类型

对于已经上传到 Blob 存储的内容,如果要修改 MIME,可以安装 Azure Storage Explorer(Windows/Mac),在这个软件中登录存储账号,找到要修改的文件,右键单击并选择「属性」,随后就可以按需更改内容类型啦。

温馨提示:

  • Azure Storage Explorer 在 0.8.6 及以上版本才有修改 Blob 及文件属性的功能。如发现无法修改 Blob 属性,请升级至最新版。

  • 如果希望批量修改一个 Blob 容器内的所有文件,可参考 PowerShell 脚本

  • 如果改好媒体类型后浏览器仍然提示下载或报错,请清空浏览器缓存,或更换未访问过该文件的浏览器再试。

    立即访问http://market.azure.cn

Azure进阶攻略 | 下载还是在浏览器直接打开,MIME说了算!的更多相关文章

  1. Azure进阶攻略丨Azure网络通不通,PsPing&PaPing告诉你答案

    很多时候,为了解决一些问题,要查各种文档,很麻烦你造吗!做「伸手党」又容易被鄙视,这时候就需要用到[Azure 进阶攻略]啦!特此,我们推出关于 Azure 常用操作指南的系列文章,每篇涉及一个 Az ...

  2. Azure进阶攻略丨共享访问签名是个什么东东?

    Azure 进阶攻略]一经推出便受到了广大粉丝的热情追捧,大家纷纷表示涨了姿势,并希望能了解更多的攻略~根据大家的投票结果,本期,小编将为大家讲解“如何生成 Shared Access Signatu ...

  3. Azure进阶攻略 | VS2015和Azure,想要在一起其实很容易

    下雨天,巧克力和音乐很配…… 大冬天,男神和捧在手里的奶茶很配…… 「驴牌」的包包,和女神的全部衣服都配…… 对于「王首富」,容易实现的小目标和一个亿是绝配…… …… 醒醒吧!!这些事情和每天只会写代 ...

  4. Azure进阶攻略 | 该如何唤醒你?因内核超时而沉睡的Linux虚拟机!

    周五下午,当你收拾好东西准备下班,奔赴 Happy Hour 时,突然接到开发团队的电话: 对方:伙计救命啊,我在搭建开发环境,但 Azure 上的 Linux 虚拟机无法启动! 你(心里想着:你要加 ...

  5. Azure 进阶攻略 | 文件完整性,你打算如何证明?

    假设你是一位独立软件开发者,通过自己的网站提供软件下载.网站完全托管在 Azure 中,并且软件下载也是通过 Azure Blob 存储和 Azure CDN 服务提供的. 这做法真不错,不需要自己管 ...

  6. Azure进阶攻略丨如何驾驭罢工的Linux虚机网卡?

    很多人的生活中,流传着一个屡试不爽,据说可以解决任何问题的百宝锦囊: 所以经常可以听到类似这样的对话: -我的电脑咋上不去网了? -重启一下电脑. -还是不行呢! -重启一下路由器. -怎么还不行-_ ...

  7. Azure 进阶攻略 | 上云后的系统,「门禁」制度又该如何实现?

    各位办公室白领们,不妨回想一下自己每天去公司上班时的一些细节. 为避免「闲杂人等」进入工作场所,我们需要证明自己是这家公司的员工才能进入,对吧!所有员工,无论所属部门或职位,都必须先证明自己身份,例如 ...

  8. Azure进阶攻略 | 应用流畅运行杜绝超载,自有一套好方法

    世界上很多东西,无论交通工具.房屋建筑,甚至计算机程序,在容量方面都存在设计上的理论最大值. 比如火车,正常情况下是这样的.舒适地坐着,安静地读一本书,时不时抬头若有所思地远眺车窗外风景,满满的文艺范 ...

  9. Azure进阶攻略 | 你的程序也能察言观色?这个真的可以有!

    前段时间有个网站曾经火爆微博和朋友圈:颜龄机器人.只要随便上传一张包含人面孔的照片,这个网站就可以分析图片,并判断照片中人物的年龄.化妆.美颜 P 图.帽子墨镜之类的配饰,几乎都没法影响这个网站的检测 ...

随机推荐

  1. maven 打包 包含xml

    <build> <finalName>dc-exam</finalName> <!-- 包含xml文件 --> <resources> &l ...

  2. c++中STL中的next_permutation函数基本用法

    对于next_permutation函数是针对于排列组合问题的库函数,它的排序方式是按照字典的方式排列的·: 如以下代码对于next_permutation函数的初步解释: #include<c ...

  3. echarts设置线条粗细

    series: [ { name:"buy", type:'line', data:[], itemStyle: { normal: { color: '#6cb041', lin ...

  4. sqlserver 索引进阶(上)

    参考原文:http://www.cnblogs.com/tjy9999/p/4494662.html 2. 非聚集索引 SET STATISTICS io ON SET STATISTICS time ...

  5. mybatis-Plus 增强版用法收藏

    转载:http://www.cnblogs.com/okong/p/mybatis-plus-guide-one.html#xml%E5%BD%A2%E5%BC%8F https://blog.csd ...

  6. 汉诺塔问题hdu 2065——找规律

    这类题目就是纸上模拟,找规律. 问题描述:在一块铜板上有三根杆,目的是将最左边杆上的盘全部移到右边的杆上,条件是不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允 ...

  7. Linux环境搭建禅道项目管理工具

    1.开源版安装包下载 [root@iZbp ~]# wget http://dl.cnezsoft.com/zentao/9.0.1/ZenTaoPMS.9.0.1.zbox_64.tar.gz 2. ...

  8. python3与python2的区别 记录一波

    1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2 ...

  9. 持久层框架---jdbc

    1.JDBC编程步骤: 1.1 加载数据库驱动: 1.2 获取数据库连接: 1.3 通过Connection对象创建Statement对象: 1.4 使用Statement对象执行SQL语句: 1.5 ...

  10. Dropping Balls UVA - 679(二叉树的遍历)

    题目链接:https://vjudge.net/problem/UVA-679 题目大意:t组样例,每组包括D M   层数是D   问第M个小球落在哪个叶子节点?    每个节点有开关  刚开始全都 ...