2012-10-24 47 views
0

我有一個網站,允許客戶下載他們已經購買的文件。.zip擴展名下載失敗

鏈接發送給客戶,將他們引導到一個頁面,該頁面檢查鏈接是否有效,如果是,允許他們下載他們的產品。

這裏是鏈接的例子:http://www.psptubestop.com/dl/2z129a2.php?reference=6d556bde201a2fe4079874168&password=535864380ee2bc0f57cced3fe&pid=402

很多客戶都在說,當他們下載,.zip擴展丟失了,我無法找到問題,它工作正常,我的機器上,除非我「保存」,但即使如此,有些人也有問題。

有什麼辦法讓他們下載文件,並保持.zip擴展名,即使他們按「另存爲」?

這是我使用他們重定向到下載的代碼...

header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=$originalfilename"); 
header("Content-Type: application/zip"); 
header("Content-Transfer-Encoding: binary"); 

感謝您的幫助。

+1

'var_dump($ originalfilename);'看起來像什麼? – Baba

+0

你能否檢查原始文件名是否有擴展名? – nhahtdh

+0

他們使用的是Internet Explorer嗎?這個特定的網頁瀏覽器有這樣做的討厭習慣。以及其他一些令人厭惡的習慣。 – Wug

回答

0

添加一個看起來像文件名的虛擬GET參數。

...&fname=/foo.zip 
2

的問題可能是,一些文件有空間,在當前的代碼只有第一個部分是用於使失去的延伸部分,以防止則必須在其文件名在雙引號這樣的錯誤的情況下,像這樣:

header('Content-Disposition: attachment; filename="'.$originalfilename.'"'); 
+0

謝謝!我沒有想到它是空格,它似乎現在正在爲其中一些工作...我仍然有一個用戶使用IE瀏覽器,並具有相同的問題,雖然.zip擴展名被刪除。 非常感謝您的時間。 – Lisa

2

我願意打賭它是與正在那裏文件名中看到,因爲在報頭中的文件名的空間PSP_Tubes_PSP_Tubes_Lisa_Cree_The Gift_6932.zip,文件希望成爲保存爲PSP_Tubes_PSP_Tubes_Lisa_Cree_The