我維護一個商店,允許人們下載他們購買的MP3。他們進入下載的MP3的URL的形式爲:Android HTTP頭附件文件名忽略
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平板電腦(華碩變壓器),無論是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,full chrome等),以查看它是否是特定Android版本中的內容,或者是Android中股票瀏覽器的內容? – 2012-03-15 16:40:29
是的,我試過現在可用於ICS的Chrome Beta。它提供與股票瀏覽器相同的結果。我今天晚些時候可以在平板電腦上試用Firefox ... – user1185782 2012-03-15 18:09:09