我試圖創建一個在線系統,藉此我將文件(各種圖片)組織到服務器上的文件夾中,並將它們壓縮到一個文件夾中,然後下載。從一個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:\xampp\htdocs\filezipper\ZipScript2.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:\xampp\htdocs\filezipper\ZipScript2.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表單傳遞的名稱進行命名,並且它們匹配(我通過插入各種回顯命令來檢查)。
我不確定是否會導致這種情況發生 - 你們中的任何一個人都可以看出這種情況嗎?希望有一個修復? :)