我知道从网站下载(比方说)PPTX并将其下载为ZIP(Office 2007文件格式重命名为zip)的问题的根本原因我知道如何在Web服务器中修复它(添加MIME类型)。
但我有兴趣了解为什么会发生这种情况,并且该过程的机制由Web服务器和Web浏览器执行。我知道HTTP流量可以自然地压缩和解压缩(gzip)以提高性能,所以我猜这也可能是问题的一部分。
例如,假设文件名和路径通过HTTP传递回浏览器。是重命名扩展程序或Web浏览器的Web服务器吗?
一个小流程图将是理想的。
答案 0 :(得分:5)
为回答这个非常老的帖子而道歉,但希望这是有用的信息。
将pptx(或docx)文件重命名为zip的原因是Web服务器和浏览器的操作组合。最有可能的是,Web服务器尚未配置为处理pptx文件,因此它使用 Content-Type:text / plain 发送它们。某些浏览器(例如Chrome和Firefox)可能会说“好,我相信你”,只需根据您的指示保存文件即可。其他浏览器(例如MSIE)可能会说“我只是检查一下”;并检查文件内容,表示ZIP文件。因此,如果MSIE在某个地方有“在下载文件时不检查MIME类型”的选项,那么这就是你需要的。
另一个解决方案在于Web服务器,它确实需要发送 Content-type:application / mspowerpoint 或类似内容。如果您具有对Web服务器的适当访问权限,则只需在.htaccess文件中添加一行代表 AddType application / mspowerpoint .pptx ,这将强制服务器发送MSIE将发送的内容类型标头正确解释。
答案 1 :(得分:3)
1)根据文件的前几个字节(通常是某种二进制文件的标题),Web浏览器可能正在使用magic numbers来识别文件类型。
如您所知,Office 2007文件打包为zip,因此浏览器(当它没有任何帮助的MIME信息时),开始下载文件,查看zip标题,然后将其保存(或者提示您保存它)作为zip文件。
这对我来说似乎是浏览器的奇怪行为,我原本希望它保留服务器提供的文件名(和扩展名),但这可能因浏览器和提供的MIME类型而异(或者未提供)。
2)或者,当服务器没有与特定文件扩展名关联的MIME类型时,服务器可能正在做同样的事情。它可能会检查文件的开头并发现它看起来像一个zip文件,因此将使用zip MIME类型将文件提供回客户端。
您可以通过使用Wireshark之类的内容检查HTTP响应或原始数据包(服务器或客户端)来排除服务器进行任何MIME类型猜测。
3)Gzipping不会出现问题,发生在较低级别,与MIME类型无关。
答案 2 :(得分:0)
我发现的最佳解释 - 无论是为什么会发生这种情况以及如何解决这些问题 - 都是http://blogs.msdn.com/b/asiatech/archive/2012/03/28/office-documents-will-be-recognized-as-zip-file-when-downloading-from-ie.aspx。