上传文件:

  1. /**
  2. * 上传文件
  3. * @param string $file 文件路径
  4. */
  5. function FileUpload($file){
  6. $data = array('file'=>'文件路径');
  7. $curl = curl_init();
  8. curl_setopt($curl, CURLOPT_URL, "访问的远程服务器文件.php");
  9. curl_setopt($curl, CURLOPT_RETURNTRANSFER, );
  10. curl_setopt($curl, CURLOPT_POST, );
  11. curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
  12. $result = curl_exec($curl);
  13. curl_close($curl); /*释放*/
  14. }

  

 解压zip

  1. /**
    * 解压文件夹
    * @param string $filename 文件夹
    * @param string $path 要上传的路径
    */
  2. function get_zip_originalsize($filename, $path) {
  3. //先判断待解压的文件是否存在
  4. if(!file_exists($filename)){
  5. die("文件 $filename 不存在!");
  6. }
  7. $starttime = explode(' ',microtime()); //解压开始的时间
  8.  
  9. //将文件名和路径转成windows系统默认的gb2312编码,否则将会读取不到
  10. $filename = iconv("utf-8","gb2312",$filename);
  11. $path = iconv("utf-8","gb2312",$path);
  12. //打开压缩包
  13. $resource = zip_open($filename);
  14. $i = ;
  15. //遍历读取压缩包里面的一个个文件
  16. while ($dir_resource = zip_read($resource)) {
  17. //如果能打开则继续
  18. if (zip_entry_open($resource,$dir_resource)) {
  19. //获取当前项目的名称,即压缩包里面当前对应的文件名
  20. $file_name = $path.zip_entry_name($dir_resource);
  21. //以最后一个“/”分割,再用字符串截取出路径部分
  22. $file_path = substr($file_name,,strrpos($file_name, "/"));
  23. //如果路径不存在,则创建一个目录,true表示可以创建多级目录
  24. if(!is_dir($file_path)){
  25. mkdir($file_path,,true);
  26. }
  27. //如果不是目录,则写入文件
  28. if(!is_dir($file_name)){
  29. //读取这个文件
  30. $file_size = zip_entry_filesize($dir_resource);
  31. //最大读取6M,如果文件过大,跳过解压,继续下一个
  32. if($file_size<(**)){
  33. $file_content = zip_entry_read($dir_resource,$file_size);
  34. file_put_contents($file_name,$file_content);
  35. }else{
  36. echo "<p> ".$i++." 此文件已被跳过,原因:文件过大, -> ".iconv("gb2312","utf-8",$file_name)." </p>";
  37. }
  38. }
  39. //关闭当前
  40. zip_entry_close($dir_resource);
  41. }
  42. }
  43. //关闭压缩包
  44. zip_close($resource);
  45. $endtime = explode(' ',microtime()); //解压结束的时间
  46. $thistime = $endtime[]+$endtime[]-($starttime[]+$starttime[]);
  47. $thistime = round($thistime,); //保留3为小数
  48. // echo "<p>解压完毕!,本次解压花费:$thistime 秒。</p>";
  49. return true;
  50. }

以上就是这次的全部内容!

curl zip上传并且解压的更多相关文章

  1. java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载

    java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载 实现功能:zip文件上传,后台自动解压,Jstree树目录(遍历文件),editor.md预览 采用Spring+Sp ...

  2. java文件下载,上传,解压方法

    1.文件下载(亲测可用) private static final int BUFFER = 2 * 1024;// 缓冲区大小(2k)private boolean isSuccess = true ...

  3. Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

    在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题. 那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar. 解决思路: ...

  4. rz -be 上传文件解压失败

    在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了.对于几百M到1G多的大文件要 ...

  5. Java实现zip压缩文件的解压

    需求描述: 前段时间写了一篇博客<Java实现对文本文件MD5加密并ftp传送到远程主机目录>,实现了一部分的业务需求.然而有些业务可能不止传送一个文件,有时候客户需要传多个文件,原有系统 ...

  6. [转]考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传

    FROM : https://segmentfault.com/a/1190000000725185 最近做的一个需求,要通过PHP调用cURL,以multipart/form-data格式上传文件. ...

  7. PHP 5.0~5.6 各版本兼容性的 cURL 文件上传

    不同版本PHP之间cURL的区别 PHP的cURL支持通过给CURL_POSTFIELDS传递关联数组(而不是字符串)来生成multipart/form-data的POST请求. 传统上,PHP的cU ...

  8. php curl文件上传兼容php5.0~5.6各版本

    PHP 5.0~5.6 各版本兼容的cURL文件上传 最近做的一个需求,使用PHP cURL上传文件.踩坑若干,整理如下. 不同版本PHP之间cURL的区别 PHP的cURL支持通过给CURL_POS ...

  9. 考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传

    最近做的一个需求,要通过PHP调用cURL,以multipart/form-data格式上传文件.踩坑若干,够一篇文章了. 重要警告 没事不要读PHP的官方中文文档!版本跟不上坑死你! 不同版本PHP ...

随机推荐

  1. UOJ#75. 【UR #6】智商锁 随机化算法 矩阵树定理

    原文链接www.cnblogs.com/zhouzhendong/p/UOJ75.html 前言 根本没想到. 题解 首先我们可以考虑一种做法: 找一些图,使得他们各自的生成树个数乘起来等于 k. 那 ...

  2. leetcode刷题11. 盛最多水的容器

    做题连接https://leetcode-cn.com/problems/container-with-most-water/submissions/ 本题分为两种方法: 暴力法: int maxAr ...

  3. C#中委托和事件的区别

    大致来说,委托是一个类,该类内部维护着一个字段,指向一个方法.事件可以被看作一个委托类型的变量,通过事件注册.取消多个委托或方法.本篇分别通过委托和事件执行多个方法,从中体会两者的区别. □ 通过委托 ...

  4. winform datagridview在添加全选checkbox时提示:不能设置 selected 或 selected 既不是表 Table 的 DataColumn 也不是 DataRelation。

    在项目中,需要多选功能,于是在datagridview添加了一列DataGridViewCheckBoxColumn 在给datagridview绑定完数据集之后,对全选进行操作的时候,发现总报错,报 ...

  5. 关于WinCC OA

    简介 WinCC OA 的全称是:SIMATIC WinCC Open Architecture,是奥地利ETM公司(ETM professional control GmbH)开发的SCADA软件系 ...

  6. BZOJ.4842.[NEERC2016]Delight for a Cat(费用流)

    BZOJ 参考这儿. 首先如果一个活动的时间满足条件,那么另一个活动也一定满足.还有就是这题就是费用流没有为什么.不妨假设最初所有时间都用来睡觉,那么我们要对每个\(k\)大小区间选出\([t2,k- ...

  7. 解决win10 报错 git pull error: cannot open .git/FETCH_HEAD: Permission denied

    sh配置git 用户解决了 git config --list //查看当前的config配置 git config --global user.name "youruser" / ...

  8. 记一次非常规方法对接硬件设备(Grason Stadler GSI 61)

    Grason Stadler GSI 61 电测听设备 (写下设备的名字, 希望别人遇坑可以搜到) 对接说明 设备厂家提供自带的软件,但是没有找到接口说明.我们需要获取设备发送过来的数据. 厂家提供的 ...

  9. 03SQLALchemy外键约束

    一,配置 1,SQLALchemy的配置单独使用config.py文件2,满足如下要求: #dialect+driver://username:password@host:port/database ...

  10. 无代理处理post非简单请求跨域问题

    express下 在处理纯http服务post请求的时候的跨域问题 即使在服务端先加入 Access-Control-Allow-Origin: *(get即时有效) 会出现 Failed to lo ...