2012-03-15 60 views
1

我維護一個商店,允許人們下載他們購買的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。

+0

您是否嘗試過在您的Transformer上使用不同的瀏覽器(例如firefox,full chrome等),以查看它是否是特定Android版本中的內容,或者是Android中股票瀏覽器的內容? – 2012-03-15 16:40:29

+0

是的,我試過現在可用於ICS的Chrome Beta。它提供與股票瀏覽器相同的結果。我今天晚些時候可以在平板電腦上試用Firefox ... – user1185782 2012-03-15 18:09:09

回答

0

我很確定這最終是一個瀏覽器實現問題。 (Here是描述IE頭版問題的文章)。很多製造商都定製了瀏覽器,因此在Android設備之間實現差異並不會讓人感到震驚。馬克B的建議嘗試不同的瀏覽器是一個很好的建議。我懷疑你會找到一個設置來解決這個不幸的。

+0

當我的平板電腦在ICS下失敗時,我真的很驚訝它在我老闆的Droid手機上工作。 – user1185782 2012-03-15 18:10:04

0

論壇現在讓我回答我自己的問題。如上所述,在我的EDIT中,Android平板電腦不會接受文件名中的空格,也不會接受下劃線,即使認爲Droid手機也會將空格轉換爲下劃線! Android平板電腦將AIR%20FOR%20PIPES轉換爲AIR for PIPES,但Droid手機將其轉換爲AIR 20FOR 20PIPES,因此真正的通用解決方案是在發送標頭之前從文件名中刪除空格。