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 相关文章推荐
使用Apache的rewrite技术
Jun 22 PHP
php中文本操作的类
Mar 17 PHP
php zend 相对路径问题
Jan 12 PHP
一些被忽视的PHP函数(简单整理)
Apr 30 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
PHP把数字转成人民币大写的函数分享
Jun 30 PHP
Yii调试SQL的常用方法
Jul 09 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
php通过记录IP来防止表单重复提交方法分析
Dec 16 PHP
php生成酷炫的四个字符验证码
Apr 22 PHP
PHP根据key删除数组中指定的元素
Feb 28 PHP
php报错502badgateway解决方法
Oct 11 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/06/09 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
php实现微信模板消息推送
2018/03/30 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
详解vue 命名视图
2019/08/14 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
Python中使用item()方法遍历字典的例子
2014/08/26 Python
anaconda如何查看并管理python环境
2019/07/05 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
python双向链表原理与实现方法详解
2019/12/03 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
通过cmd进入python的步骤
2020/06/16 Python
晚归检讨书
2014/02/19 职场文书
2014年元旦感言
2014/03/06 职场文书
消防安全员岗位职责
2014/03/10 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
毕业大学生自荐信
2014/06/17 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
民政工作个人总结
2015/02/28 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
MySQL之DML语言
2021/04/05 MySQL
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server