【发布时间】:2012-03-15 16:38:42
【问题描述】:
我经营着一家商店,人们可以下载他们购买的 mp3。他们输入的下载 mp3 的 URL 格式为:
http://domainName/download.php?a=123&b=456
这是我的 php 程序发送到浏览器的典型标头(使用 Fiddler 捕获):
Cache-Control: must-revalidate, post-check=0, pre-check=0
Content-Type: audio/mpeg
Content-Length: 3011430
Content-Disposition: attachment;filename="AIR FOR PIPES.MP3";
在 Android 平板电脑(ASUS Transformer)上,无论是 4.0 之前还是 4.0 之后,下载的文件名为“download.php”,而不是“AIR FOR PIPES.MP3”。换句话说,浏览器会忽略附件文件名。至少这首歌即使使用 .php 后缀也能正常播放!奇怪的是,在三星 Charge Android 2.3.6 手机上,文件名是“AIR_FOR_PIPES.MP3”(手机添加了下划线,这很好)。在 Windows 上,此代码在 IE、Firefox、Chrome 和 Safari 上运行良好。只有平板电脑让我对文件名感到悲伤。
其他网站建议我必须在“;”之后没有空格并且 mp3 必须大写 - 解决方案也不是。其他信息表明这是 POST 的一个已知错误,但如您所见,我只做 GET。我也尝试过指定“application/octet-stream”,但没有区别。
是否有一些平板电脑设置导致文件最初被称为“无标题”但最终存储为“download.php”? (我的平板电脑已加密 - 不确定这是否相关。)
编辑/回答:(论坛不会让我回答我自己的问题) 显然,平板电脑不会容忍附加文件名中的空格。我删除了它们,文件名被正确记录为 AIRFORPIPES.MP3。
【问题讨论】:
-
您是否在您的 Transformer 上尝试过不同的浏览器(例如 firefox、完整的 chrome 等...),看看它是特定 Android 版本中的东西,还是 android 中的股票浏览器?
-
是的,我尝试了 Chrome Beta,它现在可用于 ICS。它提供与股票浏览器相同的结果。我今天晚些时候可以在平板电脑上试用 Firefox...
标签: android http header filenames tablet