首页 > 编程语言 >PHP复用CURL简单文件上传的2种方法

PHP复用CURL简单文件上传的2种方法

时间:2023-12-14 18:33:27浏览次数:29  
标签:ch setopt 复用 cURL file CURL PHP curl CURLOPT

方法一:curlFile 客户端 $filePath = 'head.txt'; // 创建 CURLFile 对象 $file = new CURLFile($filePath); // 创建 cURL 资源 $ch = curl_init(); // 设置 cURL 选项 curl_setopt($ch, CURLOPT_URL, $your_upload_url); // 替换为实际的上传接口URL curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); // 设置 POST 数据,包括上传的文件 curl_setopt($ch, CURLOPT_POSTFIELDS, ['file' => $file]); // 执行 cURL 请求 $response = curl_exec($ch); // 检查是否有错误发生 if (curl_errno($ch)) { echo 'Curl error: ' . curl_error($ch); } else { // 处理上传成功的响应 echo 'Upload successful. Response: ' . $response; } // 关闭 cURL 资源 curl_close($ch); 接收端: move_uploaded_file($_FILES['file']['tmp_name'], $dest); 方法二: PUT方法 客户端: $filePath = 'head.txt'; // 打开文件并获取文件句柄 $fileHandle = fopen($filePath, 'r'); // 创建 cURL 资源 $ch = curl_init(); // 设置 cURL 选项 curl_setopt($ch, CURLOPT_URL, "http://xxx/test/upload"); // 替换为实际的上传接口URL curl_setopt($ch, CURLOPT_INFILE, $fileHandle); curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filePath)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_PUT, 1); // 执行 cURL 请求 $response = curl_exec($ch); // 检查是否有错误发生 if (curl_errno($ch)) { echo 'Curl error: ' . curl_error($ch); } else { // 处理上传成功的响应 echo 'Upload successful. Response: ' . $response; } //关闭文件句柄 fclose($fileHandle); // 关闭 cURL 资源 curl_close($ch); 接收端: $content = file_get_contents('php://input'); file_put_contents($filename,$content);

 

至于大文件的分片上传持续研究中,有结果再更新。

标签:ch,setopt,复用,cURL,file,CURL,PHP,curl,CURLOPT
From: https://www.cnblogs.com/sblack/p/17901751.html

相关文章

  • 手动安装LAMP——在 CentOS 7 上安装 PHP、Apache 和 MariaDB(替代 MySQL)
    在CentOS7上安装PHP、Apache和MariaDB(替代MySQL)的过程如下:1.更新系统:sudoyumupdate2.安装Apache:sudoyuminstallhttpd3.启动Apache服务并设置开机自启:sudosystemctlstarthttpdsudosystemctlenablehttpd4.安装MariaDB:sudoyuminstallmariadb-server......
  • php tp框架 自定义日志
    调用方法$file_log=['order_id'=>123,];(newLogs('log'))->infos('日志文案',$file_log);[2023-12-1415:24:13][INFO][log]{"msg":"日志文案","params":{"order_id":123},"file......
  • 2023最新中级难度ThinkPHP面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-中级难度ThinkPHP面试题合集问:请描述一下ThinkPHP的核心概念MVC模式的优点和局限性。优点:分层架构:MVC模式将业务逻辑、用户界面和数据访问三个层次分开,提高了代码的可读性和可维护性。可重用性强:各个模块之间的耦合度低,可以方便......
  • 2023最新高级难度ThinkPHP面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-高级难度ThinkPHP面试题合集问:请深入解释ThinkPHP框架的核心架构和运行机制。ThinkPHP的核心架构主要由三大部分组成:核心层(Core)、行为层(Behavior)和服务层(Service)。核心层是框架的基础,提供了基本的HTTP请求处理、路由分发、模板引擎等功......
  • 2023最新初级难度ThinkPHP面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-初级难度ThinkPHP面试题合集问:请简单介绍一下ThinkPHP框架。ThinkPHP是一款由国内开发者开发的开源PHP框架,主要特点如下:易于上手,非常适合中小型项目;提供了一系列的模板标签库,简化视图层开发;对ORM和MVC设计模式的支持使得业......
  • php深化学习(二)
    为了提高一定效率,我需要一些工具的工具比如composer,vscode,phpstudy,宝塔控制面板composer:是php专门管理包工具。安装看https://docs.phpcomposer.com/00-intro.html教程就行。composer不光是管理工具,还能自动构建加载器,是定制个人框架的必备的。vscode:一个开源的自己自定义的......
  • laravel php 50W数据导出excel 分批分页导出
    文章目录需求问题解决需求导出50W左右的数据导excel表问题使用phpexcel等插件,碰到数据量大很慢,可能能花半个小时以上数据量大查询慢内存不足执行超时解决使用原生csv导出设置脚本超时和内存,进行加大内存,不限制超时时间进行分页查询publicfunctionbp_out(R......
  • php 16个魔术方法
    16个方法的简单介绍__construct(),类的构造函数__destruct(),类的析构函数__call(),在对象中调用一个不可访问方法时调用__callStatic(),用静态方式中调用一个不可访问方法时调用__get(),获得一个类的成员变量时调用__set(),设置一个类的成员变量时调用__isset(),当对不可访......
  • php底层代码执行流程
    PHP在底层(C语言层面)的代码执行流程可以大致分为以下几个步骤:解析器初始化:当PHP服务启动时,会调用解析器(ZendEngine)的初始化函数进行初始化,包括各种全局变量的初始化,内存池的初始化。文件读取和解析:解析器会读取并解析PHP文件,将其转换为语法树,并将其中的函数和变量信息保......
  • PHP连接SQLSERVER及中文乱码问题
    PHP连接SQLSERVER1、PHP5.3及以后版本不再支持mssql模块,应使用SQLSRV或PDO_SQLSRV;2、下载PHP驱动程序。 http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx 内含Windows平台各种版本扩展文件,支持SQL2005及以上版本3、复制所需文件如:php_sqlsrv_73_nts_x64.dll(PHP......