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