PHP7基于curl实现的上传图片功能


Posted in PHP onMay 11, 2018

本文实例讲述了PHP7基于curl实现的上传图片功能。分享给大家供大家参考,具体如下:

根据php版本不同,curl模拟表单上传的方法不同

php5.5之前

$curl = curl_init();
if (defined('CURLOPT_SAFE_UPLOAD')) {
  curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
}
$data = array('file' => '@' . realpath($path));//‘@' 符号告诉服务器为上传资源
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERAGENT,"TEST");
$result = curl_exec($curl);
$error = curl_error($curl);

php5.5之后,到php7

$curl = curl_init();
curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
$data = array('file' => new \CURLFile(realpath($path)));
url_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERAGENT,"TEST");
$result = curl_exec($curl);
$error = curl_error($curl);

下面提供一个兼容的方法:

$curl = curl_init();
if (class_exists('\CURLFile')) {
 curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
$data = array('file' => new \CURLFile(realpath($path)));//>=5.5
} else {
 if (defined('CURLOPT_SAFE_UPLOAD')) {
  curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
 }
 $data = array('file' => '@' . realpath($path));//<=5.5
}
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERAGENT,"TEST");
$result = curl_exec($curl);
$error = curl_error($curl);

其中:

$path:为待上传的图片地址

$url:目标服务器地址

例如

$url="http://localhost/upload.php";
$path = "/bg_right.jpg"

upload.php示例:

<?php
  file_put_contents(time().".json", json_encode($_FILES));
  $tmp_name = $_FILES['file']['tmp_name'];
  $name = $_FILES['file']['name'];
  move_uploaded_file($tmp_name,'audit/'.$name);
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
如何对PHP程序中的常见漏洞进行攻击(上)
Oct 09 PHP
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
Dec 11 PHP
PHP define函数的使用说明
Aug 27 PHP
php日期转时间戳,指定日期转换成时间戳
Jul 17 PHP
php从数组中随机抽取一些元素的代码
Nov 05 PHP
php 判断服务器操作系统的类型
Feb 17 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
Jan 12 PHP
php 生成加密公钥加密私钥实例详解
Jun 16 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
Jun 29 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
php实现图片压缩处理
Sep 09 PHP
关于ThinkPHP中的异常处理详解
May 11 #PHP
PHP基于递归算法解决兔子生兔子问题
May 11 #PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 #PHP
laravel项目利用twemproxy部署redis集群的完整步骤
May 11 #PHP
PHP实现搜索时记住状态的方法示例
May 11 #PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
May 10 #PHP
PHP使用PDO抽象层获取查询结果的方法示例
May 10 #PHP
You might like
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
基于simple_html_dom的使用小结
2013/07/01 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
Python实现统计代码行的方法分析
2017/07/12 Python
Python编程之string相关操作实例详解
2017/07/22 Python
scrapy爬虫实例分享
2017/12/28 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
NumPy中的维度Axis详解
2019/11/26 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
幼儿园教师获奖感言
2014/03/11 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL
Java完整实现记事本代码
2022/06/16 Java/Android