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编程效率的53个要点(经验小结)
Sep 04 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
Jun 12 PHP
php图片处理函数获取类型及扩展名实例
Nov 19 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
php多重接口的实现方法
Jun 20 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
php精度计算的问题解析
Jun 21 PHP
PHP实现时间日期友好显示实现代码
Sep 08 PHP
laravel 多图上传及图片的存储例子
Oct 14 PHP
Laravel5.1 框架路由基础详解
Jan 04 PHP
php post换行的方法
Feb 03 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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
浅析PHP绘图技术
2013/07/03 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
浅谈python中的__init__、__new__和__call__方法
2017/07/18 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
python opencv实现证件照换底功能
2019/08/19 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
使用python turtle画高达
2020/01/19 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
Css3圆角边框制作代码
2015/11/18 HTML / CSS
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
大学自主招生自荐信范文
2014/02/26 职场文书
党风廉政建设责任书
2014/04/14 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python