zoukankan      html  css  js  c++  java
  • php 获取某文件夹(比如共享文件夹)下图片并下载并压缩成zip

    1.前端部分:直接请求

      

           

    2.后端php

    //zip下载
    public function downZip(){
    $pro_code = "test"; //zip名称

    //获取列表
    $dir = input('path',''); //文件路径 eg: \192.168.199.17620200522153602501004911
    $filelist = getImgList($dir);

    $filepath = $_SERVER['DOCUMENT_ROOT'].'/downZip/'; //项目中存放zip文件路径
    if(!is_dir($filepath)){
    mkdir($filepath);
    }

    //文件名称及路径
    $filename = $filepath.$pro_code.'.zip';
    $filename = iconv("utf-8","gb2312",$filename); //解决中文不能显示问题

    if(!file_exists($filename)){
    //使用ZipArchive类重新生成文件
    $zip = new ipArchive();

    if($zip->open($filename,IPARCHIVE::CREATE)){
    foreach($filelist as $file){
    if(file_exists($file)){
    $zip->addFile($file, basename($file)); //zip写入数据
    }
    }
    }else{
    exit('无法打开文件,或者文件创建失败!');
    }

    $zip->close();
    }

    //创建后需再次判断文件是否存在
    if(!file_exists($filename)){
    exit('没有找到文件!');
    }

    //下面是输出下载;
    header("Cache-Control:max-age=0");
    header("Content-Description:FileTransfer");
    header('Content-disposition:attachment;filename='.basename($filename));//文件名
    header("Content-Type:application/zip");//zip格式的
    header("Content-Transfer-Encoding:binary");//告诉浏览器,这是二进制文件
    header('Content-Length:'.filesize($filename));//告诉浏览器,文件大小
    @readfile($filename);//输出文件;
    }
    //获取图片文件列表函数
    function getImgList($dir){
    $files = array();
    if(is_dir($dir)){
    $file_dir = scandir($dir);
    foreach($file_dir as $file){
    if($file == '.' || $file == '..'){
    continue;
    }elseif(is_dir($dir.$file.'/')){
    $files = array_merge($files, getImgList($dir.$file.'/'));
    }else{
    if(isImage($dir.$file) !== false){
    array_push($files, $dir.$file);
    }
    }
    }
    }
    return $files;
    }
  • 相关阅读:
    Angularjs中的缓存以及缓存清理
    举例子来说明Python引用和对象
    对象关系映射ORM
    Apache Storm 核心概念
    Linux如何查看哪个进程占用的SWAP分区比较多?
    MySQL彻底清除slave信息
    监控MySQL的时候监控用户应该怎么授权?
    MySQL用户密码修改
    专职DBA-Zabbix 3.0 for percona-server TokuDB
    防止rm强制删除
  • 原文地址:https://www.cnblogs.com/luqiang213917/p/13756055.html
Copyright © 2011-2022 走看看