发送端

  1. <?php
  2.  
  3. function curlPut($destUrl, $sourceFileDir, $headerArr = array(), $timeout = 10)
  4. {
  5. $ch = curl_init(); //初始化curl
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而不直接输出
  7. curl_setopt($ch, CURLOPT_URL, $destUrl); //设置put到的url
  8. curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr);
  9. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  10. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证对等证书
  11. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //不检查服务器SSL证书
  12.  
  13. curl_setopt($ch, CURLOPT_PUT, true); //设置为PUT请求
  14. curl_setopt($ch, CURLOPT_INFILE, fopen($sourceFileDir, 'rb')); //设置资源句柄
  15. curl_setopt($ch, CURLOPT_INFILESIZE, filesize($sourceFileDir));
  16.  
  17. $response = curl_exec($ch);
  18. if ($error = curl_error($ch))
  19. {
  20. $bkArr = array(
  21. 'code' => 0,
  22. 'msg' => $error,
  23. );
  24. }
  25. else
  26. {
  27. $bkArr = array(
  28. 'code' => 1,
  29. 'msg' => 'ok',
  30. 'resp' => $response,
  31. );
  32. }
  33.  
  34. curl_close($ch); // 关闭 cURL 释放资源
  35.  
  36. return $bkArr;
  37. }
  38.  
  39. $destUrl = 'http://www.songjm.com/http_put_save.php';
  40. $sourceFileDir = 'asset/pic.png';
  41. $headerArr = array(
  42. 'filename:newname.png',
  43. );
  44.  
  45. $bkJson = curlPut($destUrl, $sourceFileDir, $headerArr);
  46. $bkArr = json_decode($bkJson, true);
  47. echo "<pre>";
  48. print_r($bkArr);
  49. die;

接收端

  1. <?php
  2.  
  3. if ($_SERVER['REQUEST_METHOD'] != 'PUT')
  4. {
  5. $bkMsg = array(
  6. 'code' => -1,
  7. 'msg' => 'not put',
  8. );
  9. echo json_encode($bkMsg);
  10. exit();
  11. }
  12.  
  13. $filename = $_SERVER['HTTP_FILENAME'];
  14.  
  15. $fileSaveDir = 'upload/';
  16. $newFile = $fileSaveDir.$filename;
  17.  
  18. $handleToSave = fopen($newFile,'wb+');
  19. $handleSource = fopen('php://input','rb');
  20.  
  21. while (!feof($handleSource))
  22. {
  23. fwrite($handleToSave, fread($handleSource, 1024));
  24. }
  25.  
  26. fclose($handleToSave);
  27. fclose($handleSource);
  28.  
  29. $bkMsg = array(
  30. 'code' => 1,
  31. 'msg' => 'ok',
  32. );
  33. echo json_encode($bkMsg);
  34. exit();

curl put方式上传文件的更多相关文章

  1. PHP curl put方式上传文件

    发送端: <?php function curlPut($destUrl, $sourceFileDir, $headerArr = array(), $timeout = ) { $ch = ...

  2. Ajax方式上传文件

    用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,但IE9尚未支持 For ...

  3. 通过Ajax方式上传文件,使用FormData进行Ajax请求

    通过传统的form表单提交的方式上传文件: <form id= "uploadForm" action= "http://localhost:8080/cfJAX_ ...

  4. Android必知必会-使用okhttp的PUT方式上传文件

    注:如果移动端排版有问题,请看 简书版 (<-点击左边),希望CSDN能更好的支持移动端. 背景 公司的文件上传接口使用PUT协议,之前一直用的都是老项目中的上传类,现在项目中使用了okhttp ...

  5. koa2:通过Ajax方式上传文件,使用FormData进行Ajax请求

    koa2通过表单上传的网上很多,但通过Ajax方式上传文件,使用FormData进行Ajax请求,不好找. 参考了这个用base64上传图片的例子.https://github.com/Yuki-Mi ...

  6. 前端 - jquery方式 / iframe +form 方式 上传文件

    环境与上一章一样 jquery 方式上传文件: HTML代码 {#html代码开始#} <input type="file" id="img" > ...

  7. [转] 通过Ajax方式上传文件,使用FormData进行Ajax请求

    通过传统的form表单提交的方式上传文件: <form id= "uploadForm" action= "http://localhost:8080/cfJAX_ ...

  8. egg.js 通过 form 和 ajax 两种方式上传文件并自定义目录和文件名

    egg.js 通过 form 和 ajax 两种方式上传文件并自定义目录和文件名 评论:10 · 阅读:8437· 喜欢:0 一.需求 二.CSRF 校验 三.通过 form 表单上传文件 四.通过 ...

  9. php5.6之后的版本使用curl以@+文件名的方式上传文件无效的解决版本

    使用curl上传文件使用file=@文件路径的方式,在php5.6以后的版本中无法使用了 官方文档给出明确解释 如果需要支持的话,可以将CURLOPT_SAFE_UPLOAD设置为false 或者使用 ...

随机推荐

  1. BDD行为驱动简介及Pytest-bdd基础使用

    目录 BDD介绍 需求描述/用户场景 场景解析/实现 场景测试 Pytest-bdd的参数化 运行环境: pip insall pytest pytest-bdd pytest-selenium BD ...

  2. 执行jar包或执行其中的某个类

    执行jar包,默认执行javafile中指定的main程序java -jar jar包例如 java -jar test.jar执行依赖其他jar包的class: java -cp .;E:\tool ...

  3. JAVA单元测试的用法和要点

      2018年09月25日 10:11:18 琼歌 阅读数 5192   版权声明:禁止转载 https://blog.csdn.net/qq_36505948/article/details/827 ...

  4. koa 项目实战(六)注册接口加密

    1.创建工具类 根目录/config/tools.js const bcrypt = require('bcryptjs'); const tools = { enbcrypt(password) { ...

  5. 配置默认编码为utf8

    修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示: [mysqld] character_set_server=utf8 init_connect='SET NAMES ...

  6. linux安装jdk1.8之后报错Error: dl failure on line 893的解决办法

    问题描述:安装jdk1.8之后,输入java -version查看安装是否成功之后,报错:   报错如下: Error: dl failure on line 893 Error: failed /u ...

  7. ubuntu下如何使用dpkg删除某个软件包?

    答:步骤如下: 1. 找出包名 dpkg -l |grep <package name> 2. 卸载 dpkg -r <package name>

  8. C++ STL——常用算法

    目录 一 常用查找算法 二 常用遍历算法 注:原创不易,转载请务必注明原作者和出处,感谢支持! 注:内容来自某培训课程,不一定完全正确! 一 常用查找算法 /* find算法 查找元素 @param ...

  9. 使用Jsp +Js + Jquery + EasyUI + Servlet + Lucene,完成分页

    步一:创建ArticleDao.java类 public class ArticleDao { public Integer getAllObjectNum(String keywords) thro ...

  10. 表的操作管理和 MySQL 的约束控制

    一.表的操作 1.表的基本概念 数据库与表之间的关系:数据库是由各种数据表组成的,数据表是数据库中最重要的对象,用来存储和操作数据的逻辑结构. 表由列和行组成,列是表数据的描述,行是表数据的实例. 表 ...