我想在php中下载zip文件。 这是我的代码如下。
<?php
ob_start();
// set example variables
$filename = "test.zip";
$filepath = "/home/somewhere/file/zip";
// http headers for zip downloads
header("Pragma: no-cache");
header("Expires: on, 01 Jan 1970 00:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Content-Description: File Transfer");
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filepath.$filename));
readfile($filepath.$filename);
?>
我的html代码中有一个链接。
<html>
<head>
</head>
<body>
<a href="myPHPfile.php">Download</a>
</body>
</html>
当我点击名为&#39; Donwload&#39;的链接时,该文件已成功下载。但是我无法解压缩并打开文件。
我第一次下载时文件名是test.zip,它只是文件名。当我单击它解压缩时会创建它的扩展名。 文件的扩展名为&#34;。 cpgz&#34;不是&#34; .zip&#34;。
这是我下载时的日志。
Resource interpreted as Document but transferred with MIME type application/zip:"myPHPfile.php"
我的代码中有错误吗?或错过什么? 我怎样才能解决这个问题? 我上传的文件已经在服务器中压缩,我想要做的只是下载它。
答案 0 :(得分:0)
问题是你的文件路径,缺少尾随&#34; /&#34;在&#34; / home / somewhere / file / zip&#34;工作目录应该是: $ filepath =&#34; / home / somewhere / file / zip /&#34 ;;
答案 1 :(得分:0)
现在这段代码很棒!
<?php
$filepath = iconv("UTF-8","CP949", "/home/somewhere/zip/test.zip");
header("Pragma: no-cache");
header("Expires: on, 01 Jan 1970 00:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Content-Description: File Transfer");
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=test.zip");
header("Content-Transfer-incoding: utf-8");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filepath));
ob_end_flush();
readfile($filepath);
?>