curl zip上传并且解压
上传文件:
- /**
- * 上传文件
- * @param string $file 文件路径
- */
- function FileUpload($file){
- $data = array('file'=>'文件路径');
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, "访问的远程服务器文件.php");
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, );
- curl_setopt($curl, CURLOPT_POST, );
- 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 = ;
- //遍历读取压缩包里面的一个个文件
- 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,,strrpos($file_name, "/"));
- //如果路径不存在,则创建一个目录,true表示可以创建多级目录
- if(!is_dir($file_path)){
- mkdir($file_path,,true);
- }
- //如果不是目录,则写入文件
- if(!is_dir($file_name)){
- //读取这个文件
- $file_size = zip_entry_filesize($dir_resource);
- //最大读取6M,如果文件过大,跳过解压,继续下一个
- if($file_size<(**)){
- $file_content = zip_entry_read($dir_resource,$file_size);
- file_put_contents($file_name,$file_content);
- }else{
- echo "<p> ".$i++." 此文件已被跳过,原因:文件过大, -> ".iconv("gb2312","utf-8",$file_name)." </p>";
- }
- }
- //关闭当前
- zip_entry_close($dir_resource);
- }
- }
- //关闭压缩包
- zip_close($resource);
- $endtime = explode(' ',microtime()); //解压结束的时间
- $thistime = $endtime[]+$endtime[]-($starttime[]+$starttime[]);
- $thistime = round($thistime,); //保留3为小数
- // echo "<p>解压完毕!,本次解压花费:$thistime 秒。</p>";
- return true;
- }
以上就是这次的全部内容!
curl zip上传并且解压的更多相关文章
- java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载
java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载 实现功能:zip文件上传,后台自动解压,Jstree树目录(遍历文件),editor.md预览 采用Spring+Sp ...
- java文件下载,上传,解压方法
1.文件下载(亲测可用) private static final int BUFFER = 2 * 1024;// 缓冲区大小(2k)private boolean isSuccess = true ...
- Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)
在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题. 那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar. 解决思路: ...
- rz -be 上传文件解压失败
在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了.对于几百M到1G多的大文件要 ...
- Java实现zip压缩文件的解压
需求描述: 前段时间写了一篇博客<Java实现对文本文件MD5加密并ftp传送到远程主机目录>,实现了一部分的业务需求.然而有些业务可能不止传送一个文件,有时候客户需要传多个文件,原有系统 ...
- [转]考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传
FROM : https://segmentfault.com/a/1190000000725185 最近做的一个需求,要通过PHP调用cURL,以multipart/form-data格式上传文件. ...
- PHP 5.0~5.6 各版本兼容性的 cURL 文件上传
不同版本PHP之间cURL的区别 PHP的cURL支持通过给CURL_POSTFIELDS传递关联数组(而不是字符串)来生成multipart/form-data的POST请求. 传统上,PHP的cU ...
- php curl文件上传兼容php5.0~5.6各版本
PHP 5.0~5.6 各版本兼容的cURL文件上传 最近做的一个需求,使用PHP cURL上传文件.踩坑若干,整理如下. 不同版本PHP之间cURL的区别 PHP的cURL支持通过给CURL_POS ...
- 考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传
最近做的一个需求,要通过PHP调用cURL,以multipart/form-data格式上传文件.踩坑若干,够一篇文章了. 重要警告 没事不要读PHP的官方中文文档!版本跟不上坑死你! 不同版本PHP ...
随机推荐
- UOJ#75. 【UR #6】智商锁 随机化算法 矩阵树定理
原文链接www.cnblogs.com/zhouzhendong/p/UOJ75.html 前言 根本没想到. 题解 首先我们可以考虑一种做法: 找一些图,使得他们各自的生成树个数乘起来等于 k. 那 ...
- leetcode刷题11. 盛最多水的容器
做题连接https://leetcode-cn.com/problems/container-with-most-water/submissions/ 本题分为两种方法: 暴力法: int maxAr ...
- C#中委托和事件的区别
大致来说,委托是一个类,该类内部维护着一个字段,指向一个方法.事件可以被看作一个委托类型的变量,通过事件注册.取消多个委托或方法.本篇分别通过委托和事件执行多个方法,从中体会两者的区别. □ 通过委托 ...
- winform datagridview在添加全选checkbox时提示:不能设置 selected 或 selected 既不是表 Table 的 DataColumn 也不是 DataRelation。
在项目中,需要多选功能,于是在datagridview添加了一列DataGridViewCheckBoxColumn 在给datagridview绑定完数据集之后,对全选进行操作的时候,发现总报错,报 ...
- 关于WinCC OA
简介 WinCC OA 的全称是:SIMATIC WinCC Open Architecture,是奥地利ETM公司(ETM professional control GmbH)开发的SCADA软件系 ...
- BZOJ.4842.[NEERC2016]Delight for a Cat(费用流)
BZOJ 参考这儿. 首先如果一个活动的时间满足条件,那么另一个活动也一定满足.还有就是这题就是费用流没有为什么.不妨假设最初所有时间都用来睡觉,那么我们要对每个\(k\)大小区间选出\([t2,k- ...
- 解决win10 报错 git pull error: cannot open .git/FETCH_HEAD: Permission denied
sh配置git 用户解决了 git config --list //查看当前的config配置 git config --global user.name "youruser" / ...
- 记一次非常规方法对接硬件设备(Grason Stadler GSI 61)
Grason Stadler GSI 61 电测听设备 (写下设备的名字, 希望别人遇坑可以搜到) 对接说明 设备厂家提供自带的软件,但是没有找到接口说明.我们需要获取设备发送过来的数据. 厂家提供的 ...
- 03SQLALchemy外键约束
一,配置 1,SQLALchemy的配置单独使用config.py文件2,满足如下要求: #dialect+driver://username:password@host:port/database ...
- 无代理处理post非简单请求跨域问题
express下 在处理纯http服务post请求的时候的跨域问题 即使在服务端先加入 Access-Control-Allow-Origin: *(get即时有效) 会出现 Failed to lo ...