2011-11-07 184 views
4

我使用的是我在這裏找到的下載類http://www.phpclasses.org/package/3220-PHP-Serve-files-for-download-with-resume-support.html讓ppl下載MP3文件。firefox下載沒有擴展名的mp3文件

它適用於所有瀏覽器,除了Firefox(在所有版本中)。

當我使用firefox中的這個類下載一個mp3文件時,它會下載沒有.mp3擴展名的文件。什麼可能會導致這種情況,我該如何解決它?

+0

這些文件是否由服務器實際上作爲mp3服務器? – PeeHaa

+0

是的,他們是作爲MP3文件,但這個下載類有一個重命名功能,我使用 –

回答

1

無需任何代碼,我的猜測是,你不發送文件名作爲HTTP標頭:

header("Content-Disposition: attachment; filename=" . $filename); 

你也應該發送正確的MIME類型:

header("Content-type: audio/mpeg3"); 

編輯:沒關係,我以爲我不能在OP的鏈接下載文件,現在可以看到我錯了。該腳本明確使用這些方法,只是不確定它是否正確執行。

+0

我改變它從音頻/ MPEG到音頻/ MPEG3,但沒有工作。 –

+0

你確定文件名在上面的頭文件中設置正確嗎?這會導致文件名無延伸。 – nickb

+0

哦,這個人解決了這個問題。如果我沒有擴展名的話,Firefox不會讓它生效。現在它是固定的感謝.. –

8

看來,Firefox的文件保存擴展名,你必須用引號包圍文件名。

header('Content-Disposition: attachment; filename="'.$file.'"'); 
2

請再次檢查文件名。如果文件下載有1個字符是空格鍵(「」) 例如:「template import.xls」。火狐將是錯誤的,沒有擴展名下載。 您可以使用替換(「」,「」)來解決與asp.net的問題:

HttpContext.Current.Response.AddHeader(「content-disposition」,「attachment; filename =」+ reportName.Replace 「」,「」));