我想我会转贴,因为我有更详细的信息:
问题:Android Chrome浏览器在所有情况下都会将文件重命名为"下载"。在某些情况下,它会将类型重命名为". bin(例如,如果扩展名是. MOV)。正如我之前提到的,同一台Android设备上的Firefox和Dolphin浏览器应用程序不会出现这种行为。文件下载正确。顺便说一句,我已经尝试过在Anchor元素中指定一个"Download"属性,但没有成功。在这种情况下,即使是Android Chrome浏览器也会忽略"Download"属性。我的直觉是,这是因为我们流式传输文件的方式,"Download"属性被忽略。另一件事要注意的是,桌面版本的Chrome浏览器下载文件没有这个问题(没有重命名)。我认为有一些内置的安全功能的Chrome浏览器,是造成这些重命名问题。
背景信息:Web服务器是Windows Azure云上的IIS 7.5。使用的Web应用程序是Microsoft的MVC路由框架。因此,当选择从Android设备中的Chrome浏览器下载文件时,将使用MS MVC路由访问服务器上的下载方法。在此方法中,我们使用httpResponse来指定文件头信息和文件的流分割部分,这对于Android设备上的任何其他浏览器应用程序都非常有效(例如Firefox和Dolphin),并且能够使用正确的文件名和类型保存。然而,在Chrome中,文件和类型(有时)会被重命名。
下面是我下载. MOV文件时的响应头:
*HTTP/1.1 200 OK高速缓存控制:私有,s-maxage = 0内容长度:54295903内容类型:应用程序/八位字节流服务器:微软-IIS/7.5 X-AspNetMvc-版本:4.0内容处置:依恋;文件名 = UTF-8'' MyVideo.MOV X-AspNet-版本:4.0.30319 X技术支持者:ASP.NET日期:2013年6月29日星期六格林尼治标准时间05:01:32
帮助!:我将非常感谢任何关于解决方案的建议。同时,我也希望在Google开发社区工作的人能明确地告诉我这个问题是否会在下一次更新中得到解决。谢谢!
4条答案
按热度按时间qncylg1j1#
Content-Disposition
在安卓系统上一直是个问题。当然欢迎你尝试删除UTF-8
部分,看看这是否对Chrome有帮助。但一定要测试原始的安卓浏览器应用,因为从数字上看,它是安卓系统最受欢迎的浏览器。另见:
axzmvihb2#
我在Chrome/Android上下载时也遇到过类似的问题。.docx文件被重命名为filenameiderbin(或类似的东西)。
包括标头
以及
原来我的问题是在“Content-Disposition”标题中的尾部分号。当行尾没有分号时-它工作得很好:
更多信息:http://www.digiblog.de/2011/04/android-and-the-download-file-headers/
所以,一定要检查一下。
yb3bgrhw3#
这是我们在直播和SO这里https://stackoverflow.com/questions/17266320/chrome-browser-in-android-always-renames-downloaded-file-to-download-bin上回答的前一个问题的重复,该问题已被删除。
这将在下一次刷新时修复,特别是通过a[download]属性。
kd3sttzy4#
对于我的特殊情况,我下载了一个kmz文件。这是一个压缩的kml文件(Map数据)。我的
Content-Disposition
是attachment;filename=export.kmz
,但在Android上的Chromium上,该文件将保存为export.kmz.zip
。我的解决方案是查看
Content-Type
。我根本没有设置这个头文件,所以我猜Chromium假设它是一个普通的zip文件。我决定检查是否有kmz内容类型。果然,我找到了这个链接,并按照其中的iana链接:HTTP“Content-Type”报头的所有可能值是什么?
然后发现这个值应该是
application/vnd.google-earth.kmz
。有了这个修改,它没有重命名我的文件。那么,这里还有一个可能的解决方案:看看你的内容类型是否正确,是否足够具体。