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中调用JAVA
Oct 09 PHP
php设计模式 Interpreter(解释器模式)
Jun 26 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 PHP
php 读取文件头判断文件类型的实现代码
Aug 05 PHP
php简单的留言板与回复功能具体实现
Feb 19 PHP
PHPThumb图片处理实例
May 03 PHP
Codeigniter实现发送带附件的邮件
Mar 19 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
PHP实现的用户注册表单验证功能简单示例
Feb 25 PHP
laravel高级的Join语法详解以及使用Join多个条件
Oct 16 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
2006/12/14 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
vuex分模块后,实现获取state的值
2020/07/26 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
Python中有趣在__call__函数
2015/06/21 Python
Flask数据库迁移简单介绍
2017/10/24 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
python实现简单日期工具类
2019/04/24 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
python多线程扫描端口(线程池)
2019/09/04 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
军训自我鉴定
2014/01/22 职场文书
社会实践评语
2014/04/28 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
人事任命书范本
2015/09/21 职场文书
施工安全责任协议书
2016/03/23 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis