我试图在用户点击链接后强行下载文件。单击链接后,即时创建一个zip文件,并将其下载到用户的计算机上。我的代码在localhost上运行时有效,但在从服务器运行时显示空白页。
这是下载文件的链接:
<a href="downloadfile.php"> Download </a>
这是downloadfile.php:
<?php
$file = tempnam("tmp", "zip");
$zip = new ZipArchive();
$zip->open($file, ZipArchive::OVERWRITE);
$zip->addFromString('test.txt', "this is a test file");
$zip->close();
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="testfile.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($file);
unlink($file);
exit();
?>
答案 0 :(得分:2)
请检查您的生产服务器上是否启用了ziparchive。
同时更改此标题:
header('Content-Type: application/octet-stream');
对此:
header("Content-Type: application/zip");
您应该使用正确的标头。我在我的本地计算机上进行了测试,但它确实有效。
答案 1 :(得分:0)
我认为还有其他问题因为您的脚本正在我的服务器上工作尝试在您的脚本页面顶部添加此行
ob_start();