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 相关文章推荐
Gregarius中文日期格式问题解决办法
Apr 22 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
PHP stripos()函数及注意事项的分析
Jun 08 PHP
深入file_get_contents函数抓取内容失败的原因分析
Jun 25 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
Jun 23 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
PHP微信企业号开发之回调模式开启与用法示例
Nov 25 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
laravel中的一些简单实用功能
Nov 03 PHP
PHP文件后缀不强制为.php方法
Mar 31 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使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
Python 元组(Tuple)操作详解
2014/03/11 Python
python根据日期返回星期几的方法
2015/07/06 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
python manage.py runserver流程解析
2019/11/08 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
初中政治教学反思
2014/01/17 职场文书
市场营销管理制度
2014/01/29 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
个人考核材料
2014/05/15 职场文书
物业管理专业自荐信
2014/07/01 职场文书
商场周年庆活动方案
2014/08/19 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL