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 相关文章推荐
做一个有下拉功能的留言版
Oct 09 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
Sep 23 PHP
写出高质量的PHP程序
Feb 04 PHP
非常精妙的PHP递归调用与静态变量使用
Dec 16 PHP
ThinkPHP的L方法使用简介
Jun 18 PHP
Yii中CGridView关联表搜索排序方法实例详解
Dec 03 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
给WordPress的编辑后台添加提示框的代码实例分享
Dec 25 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
thinkphp3.2框架中where条件查询用法总结
Aug 13 PHP
php pdo连接数据库操作示例
Nov 18 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
wampserver改变默认网站目录的办法
2015/08/05 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
JavaScript中的Window窗口对象
2008/01/16 Javascript
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
Python生成随机数组的方法小结
2017/04/15 Python
windows下python连接oracle数据库
2017/06/07 Python
Python线程创建和终止实例代码
2018/01/20 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
Django视图类型总结
2021/02/17 Python
大学生自助营养快餐店创业计划书
2014/01/13 职场文书
英语教育专业自荐信
2014/05/29 职场文书
软环境建设心得体会
2014/09/09 职场文书
内科护士节演讲稿
2014/09/11 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
2015大一新生军训感言
2015/08/01 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL