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 相关文章推荐
记录mysql性能查询过程的使用方法
May 02 PHP
Linux编译升级php的详细方法
Nov 04 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
php使用function_exists判断函数可用的方法
Nov 19 PHP
php简单获取目录列表的方法
Mar 24 PHP
PHP通过API获取手机号码归属地
May 28 PHP
php实现将上传word文件转为html的方法
Jun 03 PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 PHP
PHP实现合并两个排序链表的方法
Jan 19 PHP
php微信公众号开发之二级菜单
Oct 20 PHP
PHP Swoole异步MySQL客户端实现方法示例
Oct 24 PHP
TP5框架安全机制实例分析
Apr 05 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
php设置编码格式的方法
2013/03/05 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
详解Vue CLI3配置解析之css.extract
2018/09/14 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
Python标准库与第三方库详解
2014/07/22 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
Python实现多进程的四种方式
2019/02/22 Python
python中def是做什么的
2020/06/10 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
详解Python 最短匹配模式
2020/07/29 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
Html5实现如何在两个div元素之间拖放图像
2013/03/29 HTML / CSS
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
计算机专业自荐信
2013/10/14 职场文书
公司委托书格式范文
2014/10/09 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers