PHP |在php

时间:2015-08-03 07:46:50

标签: php

我想在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"

我的代码中有错误吗?或错过什么? 我怎样才能解决这个问题? 我上传的文件已经在服务器中压缩,我想要做的只是下载它。

2 个答案:

答案 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);
?>