1
我已經實現了創建Zip文件夾(從數據庫路徑)並下載PHP中的壓縮文件夾的代碼。我正在使用Ubuntu操作系統。在PHP中不下載Zip文件
public function actionDownload($id) {
$model = $this->loadModel($id, 'Document');
$results = array();
$results = $this->createZip($model);
$zip = $results[0];
$size = filesize($zip->filename);
if ($zip->filename) {
header("Content-Description: File Transfer");
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=\"" . $model->name . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $size);
ob_end_flush();
flush();
readfile($zip->filename);
// To Store User Transaction Data
//$this->saveTransaction();
//ignore_user_abort(true);
unlink($zip->filename);
$zip->close();
// Delete newly created files
foreach ($results[1] as $fl) {
unlink($fl);
}
}
}
public function createZip($model) {
$data = Document::model()->findAll('parent_folder=:id', array(':id' => (int) $model->document_id));
$fileArr = array();
foreach ($data as $type) {
$fileArr[] = $type->path;
}
$filestozip = $fileArr; // FILES ARRAY TO ZIP
$path = Yii::app()->basePath . DS . 'uploads' . DS . Yii::app()->user->id;
//$model->path = trim(DS . $path . DS); // DIR NAME TO MOVE THE ZIPPED FILES
$zip = new ZipArchive();
$files = $filestozip;
$zipName = "USR_" . Yii::app()->user->id . "_" . $model->name . "_" . date("Y-m-d") . ".zip";
$fizip = $path . DS . $zipName;
if ($zip->open($fizip, ZipArchive::CREATE) === TRUE) {
foreach ($files as $fl) {
if (file_exists($fl)) {
$zip->addFile($fl, basename($fl)) or die("<p class='warning'>ERROR: Could not add file: " . $fl . "</p>");
}
}
}
$resultArr = array();
$resultArr[] = $zip;
$resultArr[] = $files;
return $resultArr;
}
zip創建代碼,做工精細和創建壓縮文件存在,但問題是該文件的所有者是www數據和文件權限是只讀。
當我試圖設置chmod($zip->filename, 0777)
權限該壓縮文件夾然後它顯示一個錯誤?
Error 500
chmod(): No such file or directory
實際上文件存在那裏。
如果我想沒有chmod()
那麼它顯示我的錯誤
Error 500
filesize(): stat failed for /home/demo.user/myapp/public_html/backend/uploads/1/USR_1_kj_2013-12-23.zip
,然後它不是下載的zip文件。
這真是我正面臨的奇怪問題。這似乎是zip文件的一些權限問題,這就是爲什麼filesize()
無法對該文件執行任何操作,但奇怪的是chmod()
也無法正常工作。
需要此幫助。
感謝
文件夾已經具有讀寫權限,但是當PHP在該文件夾中創建zip文件時,它沒有讀寫權限 – Sky
您添加了'$ zip-> close'嗎?它是否返回'true'? – hek2mgl
是的$ zip-> close()正在返回空白頁,如果我在下載之前使用它 – Sky