使用 php 的压缩文件在 windows 中不起作用

Compressed files using php won't work in windows

我正在尝试使用 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 os 中的 zip 文件时,它打不开。它说压缩文件已损坏。

大家有帮助吗?提前致谢。

移除 print " ";

您正在添加额外的字节。

我找到了这个解决方案。压缩文件适用于所有 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);

感谢大家抽出时间