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对gzip文件或者字符串解压实例参考
Jul 25 PHP
php生成xml简单实例代码
Dec 16 PHP
php通过COM类调用组件的实现代码
Jan 11 PHP
一个不易被发现的PHP后门代码解析
Jul 05 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
php使用CURL伪造IP和来源实例详解
Jan 15 PHP
浅谈php+phpStorm+xdebug配置方法
Sep 17 PHP
学习php设计模式 php实现工厂模式(factory)
Dec 07 PHP
php通过文件头判断格式的方法
May 28 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 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 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python标准库之循环器(itertools)介绍
2014/11/25 Python
python中import reload __import__的区别详解
2017/10/16 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
Python读取word文本操作详解
2018/01/22 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
python eventlet绿化和patch原理
2020/11/21 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
英语系本科生个人求职信
2013/09/21 职场文书
个人求职简历的自我评价范文
2013/10/09 职场文书
酒店执行总经理岗位职责
2013/12/15 职场文书
小饰品店的创业计划书范文
2013/12/28 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
安全标兵事迹材料
2014/08/17 职场文书
开场白怎么写
2015/06/01 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android