博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
curl zip上传并且解压
阅读量:6158 次
发布时间:2019-06-21

本文共 2273 字,大约阅读时间需要 7 分钟。

 上传文件:

/** * 上传文件 * @param string $file 文件路径*/function FileUpload($file){    $data = array('file'=>'文件路径');    $curl = curl_init();    curl_setopt($curl, CURLOPT_URL, "访问的远程服务器文件.php");    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($curl, CURLOPT_POST, 1);    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));    $result = curl_exec($curl);    curl_close($curl); /*释放*/}

  解压zip

/**  * 解压文件夹  * @param string $filename 文件夹  * @param string $path 要上传的路径  */function get_zip_originalsize($filename, $path) {    //先判断待解压的文件是否存在    if(!file_exists($filename)){        die("文件 $filename 不存在!");    }    $starttime = explode(' ',microtime()); //解压开始的时间    //将文件名和路径转成windows系统默认的gb2312编码,否则将会读取不到    $filename = iconv("utf-8","gb2312",$filename);    $path = iconv("utf-8","gb2312",$path);    //打开压缩包    $resource = zip_open($filename);    $i = 1;    //遍历读取压缩包里面的一个个文件    while ($dir_resource = zip_read($resource)) {        //如果能打开则继续        if (zip_entry_open($resource,$dir_resource)) {            //获取当前项目的名称,即压缩包里面当前对应的文件名            $file_name = $path.zip_entry_name($dir_resource);            //以最后一个“/”分割,再用字符串截取出路径部分            $file_path = substr($file_name,0,strrpos($file_name, "/"));            //如果路径不存在,则创建一个目录,true表示可以创建多级目录            if(!is_dir($file_path)){                mkdir($file_path,0777,true);            }            //如果不是目录,则写入文件            if(!is_dir($file_name)){                //读取这个文件                $file_size = zip_entry_filesize($dir_resource);                //最大读取6M,如果文件过大,跳过解压,继续下一个                if($file_size<(1024*1024*30)){                    $file_content = zip_entry_read($dir_resource,$file_size);                    file_put_contents($file_name,$file_content);                }else{                    echo "

".$i++." 此文件已被跳过,原因:文件过大, -> ".iconv("gb2312","utf-8",$file_name)."

"; } } //关闭当前 zip_entry_close($dir_resource); } } //关闭压缩包 zip_close($resource); $endtime = explode(' ',microtime()); //解压结束的时间 $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]); $thistime = round($thistime,3); //保留3为小数// echo "

解压完毕!,本次解压花费:$thistime 秒。

"; return true;}

 

转载于:https://www.cnblogs.com/jingxiaoniu/p/9542123.html

你可能感兴趣的文章
算法-排序
查看>>
获取SQL SERVER某个数据库中所有存储过程的参数
查看>>
在Linux下编译安装Apache2(2)
查看>>
Method Swizzling 处理一类简单的崩溃
查看>>
AngularJS学习!
查看>>
在Eclipse中搭建Python Django
查看>>
struts国际化
查看>>
Laravel 5.0 - Middleware (中间件)
查看>>
文件特殊权限及facl
查看>>
我的友情链接
查看>>
Android按两次返回键退出应用
查看>>
第一章:认识Redhat Linux
查看>>
文本查看指令
查看>>
我的友情链接
查看>>
android开源项目框架大全:《IT蓝豹》
查看>>
我的友情链接
查看>>
如何做地图标注
查看>>
js移除字符串的中文/空格
查看>>
ajax的使用
查看>>
关于web安全
查看>>