使用循环将文件添加到php的zip会导致zip文件损坏
我使用以下php脚本将文件添加到带有php的Zip中使用循环将文件添加到php的zip会导致zip文件损坏,php,zip,Php,Zip,我使用以下php脚本将文件添加到带有php的Zip中 <?php ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// session_start(); $zip = new ZipArchive(); $zip_name = time().".zip"; // Zip na
<?php
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
session_start();
$zip = new ZipArchive();
$zip_name = time().".zip"; // Zip name
$zip->open($zip_name, ZipArchive::CREATE);
$filesinSession = $_SESSION['files'];
$filesToAdd = explode(';', $filesinSession);
for($i = 1 ; $i <= sizeof($filesToAdd)-1 ; $i++)
{
//echo $filesToAdd[$i]."<br>";
$zip->addFile($filesToAdd[$i]);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
header('Content-type: application/zip');
header('Content-disposition: filename="' . $zip_name . '"');
header("Content-length: " . filesize($zip_name));
$zip_file = file_get_contents($zip_name);
readfile($zip_name);
exit();
?>
注意:会话包含以分号分隔的文件名
执行上述代码后生成的文件。当我以升华文本打开该文件时已损坏。它显示以下错误
///////////////////zip以升华文本打开///////////////////////////////////
警告:filesize():第21行C:\xampp\htdocs\HMApp1\download.php中的1508220713.zip的stat失败
警告:文件“获取”内容(1508220713.zip):无法打开流:第22行的C:\xampp\htdocs\HMApp1\download.php中没有此类文件或目录
警告:readfile(1508220713.zip):无法打开流:在第23行的C:\xampp\htdocs\HMApp1\download.php中没有这样的文件或目录 假设您的会话包含在同一目录中的文件
$filesinSession = 'gallery/1/t.jpg;gallery/1/t2.jpg;'; // if ending with ;
添加trim$filesToAdd=explode(“;”,trim($filessession,“;”)代码>
使用0
代替1
for ($i = 0; $i <= sizeof($filesToAdd) - 1; $i++) {
别忘了关上
$zip->close();
固定收割台
header('Content-Disposition: attachment; filename="' . $zip_name . '"');
已删除文件获取内容
您不需要它
清除缓冲区//转义服务器错误
ob_end_clean();
flush();
全源
$zip = new ZipArchive();
$zip_name = time() . ".zip"; // Zip name
$zip->open($zip_name, ZipArchive::CREATE);
$filesinSession = 'gallery/1/t.jpg;gallery/1/t2.jpg;';
$filesToAdd = explode(';', trim($filesinSession, ';'));
for ($i = 0; $i <= sizeof($filesToAdd) - 1; $i++) {
$zip->addFile($filesToAdd[$i], basename($filesToAdd[$i]));
}
$zip->close();
$size = filesize($filename);
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="' . $zip_name . '"');
header("Content-length: " . filesize($zip_name));
ob_end_clean();
flush();
readfile($zip_name);
exit();
$zip=new ZipArchive();
$zip_name=time()。“.zip”;//邮政编码
$zip->open($zip\u name,ZipArchive::CREATE);
$filessession='gallery/1/t.jpg;画廊/1/t2.jpg ;;
$filesToAdd=explode(“;”,trim($filessession,“;”);
对于($i=0;$i addFile($filesToAdd[$i],basename($filesToAdd[$i]));
}
$zip->close();
$size=filesize($filename);
标题(“内容类型:应用程序/zip”);
标题('Content-Disposition:attachment;filename=“.”.$zip_name.'”);
标题(“内容长度:”.filesize($zip_name));
ob_end_clean();
冲洗();
readfile($zip_名称);
退出();
您有足够的权限创建文件吗?@lvaroTouzón zip文件是在我的脚本所在的同一文件夹中创建的。但是,当我试图读取该zip文件进行下载时,它会抛出以上三个错误。那么,php似乎没有本地化您的.zip文件,@lvaroTouzón那么我该怎么办?您调用了$zip->close()?
$zip = new ZipArchive();
$zip_name = time() . ".zip"; // Zip name
$zip->open($zip_name, ZipArchive::CREATE);
$filesinSession = 'gallery/1/t.jpg;gallery/1/t2.jpg;';
$filesToAdd = explode(';', trim($filesinSession, ';'));
for ($i = 0; $i <= sizeof($filesToAdd) - 1; $i++) {
$zip->addFile($filesToAdd[$i], basename($filesToAdd[$i]));
}
$zip->close();
$size = filesize($filename);
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="' . $zip_name . '"');
header("Content-length: " . filesize($zip_name));
ob_end_clean();
flush();
readfile($zip_name);
exit();