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($ch, CURLOPT_HTTPHEADER, $headerArr);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证对等证书
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //不检查服务器SSL证书

    curl_setopt($ch, CURLOPT_PUT, true); //设置为PUT请求
    curl_setopt($ch, CURLOPT_INFILE, fopen($sourceFileDir, ‘rb‘)); //设置资源句柄
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize($sourceFileDir));

    $response = curl_exec($ch);
    if ($error = curl_error($ch))
    {
        $bkArr =  array(
            ‘code‘ => 0,
            ‘msg‘ => $error,
        );
    }
    else
    {
        $bkArr =  array(
            ‘code‘ => 1,
            ‘msg‘ => ‘ok‘,
            ‘resp‘ => $response,
        );
    }

    curl_close($ch); // 关闭 cURL 释放资源

    return $bkArr;
}

$destUrl = ‘http://www.songjm.com/http_put_save.php‘;
$sourceFileDir = ‘asset/pic.png‘;
$headerArr = array(
    ‘filename:newname.png‘,
);

$bkJson = curlPut($destUrl, $sourceFileDir, $headerArr);
$bkArr = json_decode($bkJson, true);
echo "<pre>";
print_r($bkArr);
die;

接收端:

<?php

if ($_SERVER[‘REQUEST_METHOD‘] != ‘PUT‘)
{
    $bkMsg = array(
        ‘code‘ => -1,
        ‘msg‘ => ‘not put‘,
    );
    echo json_encode($bkMsg);
    exit();
}

$filename = $_SERVER[‘HTTP_FILENAME‘];

$fileSaveDir = ‘upload/‘;
$newFile = $fileSaveDir.$filename;

$handleToSave = fopen($newFile,‘wb+‘);
$handleSource = fopen(‘php://input‘,‘rb‘);

while (!feof($handleSource))
{
    fwrite($handleToSave, fread($handleSource, 1024));
}

fclose($handleToSave);
fclose($handleSource);

$bkMsg = array(
    ‘code‘ => 1,
    ‘msg‘ => ‘ok‘,
);
echo json_encode($bkMsg);
exit();

转自 https://www.cnblogs.com/songjianming/archive/2019/06/23/11072958.html

原文地址:https://www.cnblogs.com/rxbook/p/11227964.html

时间: 2024-11-17 03:55:48

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

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到的ur

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可参考本博客