asp.net页面某些类型的文件不能下载
今天解决了个烦恼我几天的问题,在OA页面中点击超链接DWG类型文件的时候,应该是弹出对话框问是保存还是打开(DOC,XLS等都是可以的),但是确显示“页面或文件找不到404的错误”。在"文件类型"-->"高级"中也已经选择了"下载后确认打开",文件好好的存在,为什么就说找不到了呢?为什么WORD,EXCEL这样的它就可以处理呢?
我想根本原因是,IE不知道这个文件的类型具体用什么类型的软件来处理。
经过今天的尝试、搜寻,偶尔发现了MIME,看了它的解释,明白了很可能就是服务器端MIME文件类型少了,于是在服务器端IIS属性的MIME内容中添加扩展名“ .dwg ” MIME类型填入“application/acad”,问题解决!
所以,有时候如果你遇到一些不常用的扩展名文件不能下载,也许就是IIS没有加这个MIME类型!
附:
MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
MIME的英文全称是"Multipurpose Internet Email Extension",它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。服务器会将它们发送的多媒体数据的类型告诉浏览器,而通知手段就是说明该多媒体数据的MIME类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些是Shockwave文件等等。服务器将MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件。
浏览器接收到文件后,会进入插件系统进行查找,查找出哪种插件可以识别读取接收到的文件。如果浏览器不清楚调用哪种插件系统,它可能会告诉用户缺少某插件,或者直接选择某现有插件来试图读取接收到的文件,后者可能会导致系统的崩溃。传输的信息中缺少MIME
在把输出结果传送到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个输出文档。这可以通过多种类型MIME(多功能网际邮件扩充协议)来完成。在HTTP中,MIME类型被定义在Content-Type header中。
例如,假设你要传送一个Microsoft Excel文件到客户端。那么这时的MIME类型就是“application/vnd.ms-excel”。在大多数实际情况中,这个文件然后将传送给Execl来处理(假设我们设定Execl为处理特殊MIME类型的应用程序)。在ASP中,设定MIME类型的方法是通过Response对象的ContentType属性。
多媒体文件格式MIME
最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML 文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。
MIME意为多目Internet邮件扩展,它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,它的意义就更为显著了。它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。