我正在使用php ZipArchive动态创建一个zip文件并将其发送回用户.我暂时将压缩文件存储在文档根目录上的文件夹中,然后将其与代码一起发回
header('Content-type:application/zip');
header('Content-Disposition: inline; filename="'.("file.zip").'"');
header("Content-Transfer-Encoding: binary");
header("Content-Length:".filesize($file));
$fh = fopen($file,'rb');
fpassthru($fh);
Run Code Online (Sandbox Code Playgroud)
在第一次发布之后
$zip->close()
Run Code Online (Sandbox Code Playgroud)
确保文件未打开.我遇到的问题是 - 存储的zip文件是一个有效的存档,我可以在Windows 7,7Zip,WinZIP等中打开.但是,当我用上面的代码向下发送文件时,它最终会有一个0xD 0xA对在文件的开头,这足以使其损坏.我无法弄清楚这些角色可能来自哪里.这是fopen/fpassthru的已知错误吗?任何帮助将非常感激.
尝试在Windows资源管理器中打开PHP创建的.zip文件时,我遇到了一个奇怪的错误.
它在WinRar中工作正常.
我正在创建的是一个SDS工作表下载站点,您可以在其中复选所需的PDF文档类型然后压缩它们.
该过程工作正常,我没有文件创建错误.它只有在使用Windows资源管理器打开时才会发生错误.
错误消息:"Windows无法打开该文件夹.压缩(压缩)文件夹'文件名'无效." 在Windows资源管理器中打开错误."
如果您想自己测试一下,该网站是http://www.premiere-produkter.no/pp/datablad/index.php.
下面是代码:
<?php
$error = ""; //error holder
if(isset($_POST['createpdf'])){
$post = $_POST;
$file_folder = "files/"; // folder to load files
if(extension_loaded('zip')){ // Checking ZIP extension is available
if(isset($post['files']) and count($post['files']) > 0){ // Checking files are selected
$zip = new ZipArchive(); // Load zip library
$zip_name = time().".zip"; // Zip name
if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE){ // Opening zip file to load files
$error .= "* Sorry ZIP creation failed at this time<br/>";
} …Run Code Online (Sandbox Code Playgroud)