视频教程分类
推荐视频教程
  • php程序员小白到大牛三个月集训php程序员小白到大牛三个月集训
  • Laravel 9 学习正当时—保姆级教程,想学不会都难!Laravel 9 学习正当时—保姆级教程,想学不会都难!
  • 千万级数据并发解决方案(理论+实战)千万级数据并发解决方案(理论+实战)
  • Laravel基础与实战(模块化)Laravel基础与实战(模块化)
  • UNI-APP开发(仿饿了么)UNI-APP开发(仿饿了么)
  • 首页 >后端开发 >PHP问题 > 正文

    如何解决php压缩文件失败的问题

    原创2020-10-06 13:28:461717 关注公众号:每天精选资源文章推送

    php压缩文件失败是因为缺少相关代码语句,其解决办法就是在代码文件中添加“ob_clean();flush();”语句即可。

    推荐:《PHP视频教程

    PHP实现文件下载功能,提示压缩包损坏及打不开的解决方法

    // 文件下载
    public static function downFile($id,$admin_id,$cid,$type)
    {
    $company = checkAdminCompany($admin_id,$cid);
            if (!$company) {
                return [
                    'status' => -4,
                    'statusMsg' => '公司不存在'
                ];
            }
            if ($type=='file') {
            // 判断是否有权限下载文件
    $checkFileRole = self::checkFileRole($admin_id,$cid,$id);
    if (!$checkFileRole) {
    return [
    'status' => 777,
    'statusMsg' => '没有操作权限'
    ];
    }
            $select_sql = "SELECT * FROM cloud_storage WHERE id in ($id)";
    send_execute_sql($select_sql,$fileInfo);
            } elseif ($type == 'list') {
            // 判断是否有权限移动目录下的文件
    $checkRole = self::checkRole($admin_id,$cid,$id);
    if (!$checkRole) {
    return [
    'status' => '777',
    'statusMsg' => '没有操作权限'
    ];
    }
            $select_sql = "SELECT * FROM cloud_storage WHERE list_id = $id";
    send_execute_sql($select_sql,$fileInfo);
            }
    if (empty($fileInfo)) {
            return [
    'status' => -400,
    'statusMsg' => '文件不存在'
    ];
            }
     
            foreach ($fileInfo as $key => $value) {
    $paths[$key] = $fileInfo[$key]['path'];
    }
            //这里需要注意该目录是否存在,并且有创建的权限
    $filename = 'logs/down/test.zip'; 
    if(!file_exists($filename)){
    $zip = new ZipArchive();
    if ($zip->open($filename, ZipArchive::CREATE)==TRUE) {
    foreach( $paths as $val){
      if(file_exists($val)){
       $zip->addFile( $val, basename($val));
      }
     }
     $zip->close();
    }
    }
    if(!file_exists($filename)){
    exit("无法找到文件");
    }
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header('Content-disposition: attachment; filename='.basename($filename)); //文件名
    header("Content-Type: application/zip"); //zip格式的
    header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件
    header('Content-Length: '. filesize($filename)); //告诉浏览器,文件大小
    ob_clean();
    flush();
    @readfile($filename);
    unlink($fileurl);
       exit;
    }

    其实大多数的错误都是在缺少

    ob_clean();
    flush();

    以上就是如何解决php压缩文件失败的问题的详细内容,更多请关注php中文网其它相关文章!

    PHP小白到大牛线上直播班第二十期

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

  • 相关标签:php
  • 相关文章

    相关视频


    专题推荐