2014-10-29 84 views
0

我試圖用一個文件來強制下載下面的代碼PHP力下載適用於本地主機,但不是在託管服務器

header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename='backup.zip'); 
header('Content-Length: '.filesize('backup.zip')); 
readfile('backup.zip'); 

這適用於本地主機(XAMPP)完全正常,但是當我上傳到我的主機服務器,它只是在下面的屏幕上打印一些奇怪的字符。

PK | ^EWÌV†Ÿcredit_return.csvUT「:QT」:QTuxeKƒ0÷><+ U & SSO ODA¢P「DB(E「Ñdôì÷L1ŒkŸâº¥©¾cZæi)IM‰©ÜÃkÞ|Ÿ〜 å0¬r>¡«Ù°(...Ð說[OPT«:B]ñE3ºKª¯ª÷g^...»êJKs,B³ÓsšXv/qÊ™T%ØIƒ=°½mÑ°Cß–cÊÀ~ßM」r—ÒJ_hɼÑPK|^EÑàÀUävtxn_type.csvUT 」:QT」:QTux]‘KOB1…÷üŠ¬jBñYÂÂ’¸$Mï½3dnAø÷V!qŽ»v¾³8râu9ïiZW®oý~6Y¾Ü¡'­tàÝpvª°§æ¦Y「†…¤Ê‘¾bD§®Ûл* MŸú/Ï?ðñöb¾¶æ¼o0P‘ºÁ_K³‡‹äÒ« ­;kayRÂbUÔ»Ëu–F5‚^‚Bó꽜ÿB4-pÄÀ¢‘¡C仕紳/ PK |^E〜IA3; user.csvUT「:QT」:QTux + -N-ŠÏLÑÉKÌMÕ)rÀŒ ,Äââòü¢.CC」òÄÌD(eibdlhbbdbÄPK| ^EeHÐ'åûdefinitions.sqlUT「:QT」:QTux¥ÕOo,0ð»電子

我做了很多關於谷歌搜索,計算器本身有很多關於這個問題,但大多數人沒有回答或不滿意回答。

提示:這可能與輸出緩衝區有關。

回答

0

奇怪的字符以「PK」開頭,所以我認爲你正在查看backup.zip的內容(請記住PKZIP)。您的瀏覽器似乎不知道如何處理它。

有一個例子提供的php: http://php.net/manual/en/function.readfile.php 它有更多的頭文件。可能會訣竅。

將聲明爲附件的標頭在您的示例中沒有引號。 您可以在文件名後加上雙引號,並在文件名後加上一個額外的單引號,以使引用「正確」。

header('Content-Disposition: attachment; filename="backup.zip"'); 

由於不正確的引號,整個標題可能不起作用。

0

請嘗試以下操作。

header('Content-Type: application/octet-stream'); 
header("Content-Disposition: attachment; filename='backup.zip'"); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
ob_clean(); 
flush(); 
readfile('backup.zip'); 
相關問題