从 HTML 表单数组压缩和下载文件



我正在尝试创建一个在线系统,通过该系统,我将组织在服务器上的文件夹中的文件(各种图片)压缩到单个文件夹中,然后下载。

到目前为止,查看stackoverflow,我已经提出了这个,当我使用链接的HTML进行测试时,下载的结果zip文件是一个带有zip扩展名(即user-date.zip)的文本文件,其中包含一些错误:

<head>
<title>File Zipper</title>
</head>
<br />
<b>Warning</b>:  filesize(): stat failed for Files/adsfa-20140329.zip in <b>D:xampphtdocsfilezipperZipScript2.php</b> on line <b>33</b><br />
<br />
<b>Warning</b>:  readfile(Files/adsfa-20140329.zip): failed to open stream: No such file or directory in <b>D:xampphtdocsfilezipperZipScript2.php</b> on line <b>35</b><br />

这是我的 ZipScript2.php 代码:

<head>
<title>File Zipper</title>
</head>
<?php
$filelist = $_POST['filestozip'];
$username = $_POST['user'];
$today = date("Ymd");
$packagename = $username.'-'.$today.'.zip';
$package = new ZipArchive;
$package->open($packagename, ZipArchive::CREATE);
foreach ($filelist as $file) {
  $package->addFile('/Files/'.$file.'/pics', 'Files/pics'); 
}
$package->close();
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
    header('Content-Type: "application/octet-stream"');
    header('Content-Disposition: attachment; filename="'.basename('Files/'.$packagename).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header("Content-Transfer-Encoding: binary");
    header('Pragma: public');
    header("Content-Length: ".filesize('Files/'.$packagename));
} else {
    header('Content-Type: "application/octet-stream"');
    header('Content-Disposition: attachment; filename="'.basename('Files/'.$packagename).'"');
    header("Content-Transfer-Encoding: binary");
    header('Expires: 0');
    header('Pragma: no-cache');
    header("Content-Length: ".filesize('Files/'.$packagename));
}
readfile('Files/'.packagename);
?>

在我的htdocs文件夹中(我正在使用dreamweaver来创建这个),我有我的php文件和我的"文件"目录,该目录将图片存放在各自的子目录中。注意:子目录是根据我的HTML表单传递的名称命名的,并且它们确实匹配(我已经通过插入各种echo命令进行测试进行了检查)。

我不确定这是什么原因造成的 - 你们中的任何人可以阐明这种情况吗?希望有修复?:)

你必须修复两个错误:

  • 第 21、26、29 和 35 行:在"Files"之前加上一个斜杠,就像你对 $package->addFile() 语句所做的那样。

  • 删除开头"<?php"标签之前的所有HTML代码。HTTP 标头将被发送,但如果在发送到浏览器之前有 HTML,则不会起作用。开头的 php 标签应该是脚本的第一行。

另请参阅:使用 PHP 创建和下载文件

问候

-戈尔卡

相关内容

  • 没有找到相关文章

最新更新