2014-10-29 82 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'); 
相关问题