相关疑难解决方法(0)

PHP发送的ZIP存档已损坏

我正在使用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的已知错误吗?任何帮助将非常感激.

php zip

3
推荐指数
3
解决办法
6941
查看次数

在Windows资源管理器中打开时出现PHP .zip文件下载错误

尝试在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)

php zip windows-explorer download winrar

2
推荐指数
2
解决办法
4777
查看次数

标签 统计

php ×2

zip ×2

download ×1

windows-explorer ×1

winrar ×1