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 相关文章推荐
PHP4实际应用经验篇(3)
Oct 09 PHP
php.ini 中文版
Oct 28 PHP
php 分页函数multi() discuz
Jun 21 PHP
有关php运算符的知识大全
Nov 03 PHP
php常用Stream函数集介绍
Jun 24 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 PHP
Zend Framework自定义Helper类相关注意事项总结
Mar 14 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
详细解读php的命名空间(一)
Feb 21 PHP
php输出反斜杠的实例方法
Sep 19 PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 PHP
如何解决php-fpm启动不了问题
Nov 17 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
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
python之wxPython应用实例
2014/09/28 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
2019/10/24 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
十八大观后感
2015/06/12 职场文书
投诉信格式范文
2015/07/02 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
Apache POI的基本使用详解
2021/11/07 Servers
使用Python解决图表与画布的间距问题
2022/04/11 Python