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 相关文章推荐
详细介绍:Apache+PHP+MySQL配置攻略
Sep 05 PHP
使用sockets:从新闻组中获取文章(一)
Oct 09 PHP
php多文件上传功能实现原理及代码
Apr 18 PHP
使用PHP Socket写的POP3类
Oct 30 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
May 12 PHP
golang与PHP输出excel示例
Jul 22 PHP
关于Laravel Route重定向的一个注意点
Jan 16 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
Aug 07 PHP
PHP中递归的实现实例详解
Nov 14 PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 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模板之Phpbean的目录结构
2008/01/10 PHP
phpQuery占用内存过多的处理方法
2013/11/13 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
js类 from qq
2006/11/13 Javascript
jquery tools 系列 scrollable学习
2009/09/06 Javascript
jQuery 事件队列调整方法
2009/09/18 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
Sea.JS知识总结
2016/05/05 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
python如何实现word批量转HTML
2020/09/30 Python
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
计算机专业自我鉴定
2013/10/15 职场文书
项目合作计划书
2014/01/09 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
无私奉献演讲稿
2014/09/04 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
安全教育片观后感
2015/06/17 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android