我正在尝试使用php动态压缩一些视频文件并强制下载压缩文件。以下是我写的代码。
$files_todownload_string = ' movie1.mov movie2.mov '
header('Content-Type: application/x-gzip');
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename="file.zip"');
header( 'Content-Transfer-Encoding: binary' );
$fp = popen('zip -v - ' . $files_todownload_string, 'r');
$bufsize = 8192;
$buff = '';
while( !feof($fp) ) {
$buff = fread($fp, $bufsize);
echo $buff;
print "
";
}
pclose($fp);
完美压缩并成功下载zip文件。但是,当我尝试在Windows操作系统中打开zip文件时,它将无法打开。它说压缩文件已损坏。
有人帮忙吗?提前谢谢。
答案 0 :(得分:0)
删除print "
";
您正在添加额外的字节。
答案 1 :(得分:0)
我找到了这个解决方案。压缩文件适用于所有OS Linux,Windows和Mac。
以下是代码:
$files_array = array();
$files_array[] = 'file1.mov';
$files_array[] = 'file2.mov';
$file = tempnam("tmp", "zip");
$zip = new ZipArchive();
$zip->open($file, ZipArchive::OVERWRITE);
foreach($files_array as $k => $v) {
$zip->addFile( $path.$files_available[$v] );
}
$zip->close();
header('Content-Type: application/zip');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename="file.zip"');
header( 'Content-Transfer-Encoding: binary' );
ob_end_clean();
readfile($file);
感谢大家给予时间。