经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
curl put方式上传文件
来源:cnblogs  作者:宋建明  时间:2019/6/24 8:57:18  对本文有异议

发送端

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

接收端

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

 

原文链接:http://www.cnblogs.com/songjianming/p/11072958.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号