curl put方式上传文件

发送端

 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();

原文地址:https://www.cnblogs.com/songjianming/p/11072958.html

时间: 2024-08-25 13:44:11

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

PHP curl put方式上传文件

发送端: <?php function curlPut($destUrl, $sourceFileDir, $headerArr = array(), $timeout = 10) { $ch = curl_init(); //初始化curl curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而不直接输出 curl_setopt($ch, CURLOPT_URL, $destUrl); //设置put到的url curl_setopt

android post方式上传文件(模拟表单格式数据提交)

表单提交内容为: POST /upload.php?zp_id=ab46ca6d703e3a1580c1c9b8b3a8fb39 HTTP/1.1Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/v

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

通过传统的form表单提交的方式上传文件: 1 2 3 4 5 6 7 8 9 <form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data">       <h1 >测试通过Rest接口上传文件 </h1&g

Ajax方式上传文件

用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,但IE9尚未支持 FormData 对象,还在用IE6 ? 只能仰天长叹.... 有了这两个对象,我们可以真正的实现Ajax方式上传文件. 示例代码: <!DOCTYPE html> <html> <head> <title>Html5 Ajax 上传文件</title>

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

背景 公司的文件上传接口使用PUT协议,之前一直用的都是老项目中的上传类,现在项目中使用了okhttp网络库,就查了下资料,在这里分享一下. 代码实现 /** * @param mediaType MediaType * @param uploadUrl put请求地址 * @param localPath 本地文件路径 * @return 响应的结果 和 HTTP status code * @throws IOException */ public String put(MediaType

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

通过传统的form表单提交的方式上传文件: Html代码   <form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data"> <h1 >测试通过Rest接口上传文件 </h1> <p >指定

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

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

SpringMVC系列(四)注解方式上传文件

本文主要介绍SpringMVC上传文件的两种方式 第二种较第一种而言,采用了解析器,大大提高了上传的效率. 第一种: 步骤: 1.引入jar包 2.配置spring-servlet.xml文件 <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.Commons

FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码

1.下载FastDFS的API FastDFS提供Java和PHP等语言的客户端API.可以到FastDFS在Google Code的项目主页 http://code.google.com/p/fastdfs/downloads/list 下载.本文以Java API为例. 2.调用API的上传接口 通过Servlet得到InputStream.文件名称和文件长度,然后通过调用FastDFS提供的Java API把文件上传到FastDFS服务器.下段代码中的getFileBuffer可参考本博客