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学习笔记之数组篇
Jun 28 PHP
PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
Feb 14 PHP
基于php-fpm的配置详解
Jun 03 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
php将mysql数据库整库导出生成sql文件的具体实现
Jan 08 PHP
PHP类继承 extends使用介绍
Jan 14 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
May 08 PHP
浅析php工厂模式
Nov 25 PHP
深入剖析PHP中printf()函数格式化使用
May 23 PHP
PHP数组生成XML格式数据的封装类实例
Nov 10 PHP
PHP实现对数组分页处理实例详解
Feb 07 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 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获取网站域名和地址的代码
2008/08/17 PHP
php 获取select下拉列表框的值
2010/05/08 PHP
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
js CSS操作方法集合
2008/10/31 Javascript
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
与Math.pow 相反的函数使用介绍
2014/08/04 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
python实现朴素贝叶斯算法
2018/11/19 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python实现微信好友的数据分析
2019/12/16 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
暇步士官网:Hush Puppies
2016/09/22 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
生产管理的三大手法
2013/11/11 职场文书
生物工程专业求职信
2014/09/03 职场文书
人事任命通知
2015/04/20 职场文书
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android