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 相关文章推荐
深入Nginx + PHP 缓存详解
Jul 11 PHP
ajax返回值中有回车换行、空格的解决方法分享
Oct 24 PHP
PHP批量检测并去除文件BOM头代码实例
May 08 PHP
php控制文件下载速度的方法
Mar 24 PHP
PHP版微信公众平台红包API
Apr 02 PHP
php用户注册信息验证正则表达式
Nov 12 PHP
分享php邮件管理器源码
Jan 06 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
thinkphp jquery实现图片上传和预览效果
Jul 22 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
小偷PHP+Html+缓存
2006/12/20 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
php代码架构的八点注意事项
2016/01/25 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
基于jQuery的可以控制左右滚动及自动滚动效果的代码
2010/07/25 Javascript
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
基于JS判断对象是否是数组
2020/01/10 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
2019/04/17 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
python识别验证码图片实例详解
2020/02/17 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
大学运动会通讯稿
2014/01/28 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
好听的队名和口号
2014/06/09 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
2014年评职称工作总结
2014/11/20 职场文书
2015年新农合工作总结
2015/03/30 职场文书
MySQL基于索引的压力测试的实现
2021/11/07 MySQL