php使用curl模拟浏览器表单上传文件或者图片的方法


Posted in PHP onNovember 10, 2018

前言

在浏览器使用html中的input框我们可以实现文件的上传,表单元素选用 <input type="file"> 控件,form 表单需要设置 enctype="multipart/form-data" 属性。比如:

<body>

  <form action="UploadFile.php" method="post" enctype="multipart/form-data">

  <input type="file" name="fileUpload" />

  <input type="submit" value="上传文件" />

  </form>

</body>

总有一些时候,我们需要在后台直接上传文件而不是用浏览器进行前端上传,这时候php的curl就提供了一些参数可以实现直接通过php后台上传文件。

php使用curl模拟上传文件

curl上传文件的时候,最重要的是一个“ @”符号的应用,加@符号curl就会把它当成是文件上传处理。
具体代码实例:

<?php
  header('Content-type:text/html; charset=utf-8'); //声明编码
  $ch = curl_init();
  $url = 'https://xxx.com/api/mobile/auto_upload.php?uid=9705459';
  
  //post数据,使用@符号,curl就会认为是有文件上传
  $curlPost = array('Filedata'=>'@/Users/finup/Documents/11.png');
  
  
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HEADER, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_POST, 1); //POST提交
  curl_setopt($ch, CURLOPT_POSTFIELDS,$curlPost);
  $data =curl_exec($ch);
  curl_close($ch);
  echo '<pre>';
  var_dump($data);

上述代码实例中的url是处理文件上传的具体的接口,可以直接使用$_FILES来获取上传的临时文件相关信息,打印出$_FILES如下,其中数组的键“Filedata”名可以在传递参数的时候自己指定:

Array
(
[Filedata] => Array
(
[name] => 11.png
[type] => application/octet-stream
[tmp_name] => /private/var/tmp/php936cex
[error] => 0
[size] => 36663
)
)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
模仿OSO的论坛(二)
Oct 09 PHP
php session安全问题分析
Jun 24 PHP
用php实现百度网盘图片直链的代码分享
Nov 01 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
php目录遍历函数opendir用法实例
Nov 20 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
php实现的单一入口应用程序实例分析
Sep 23 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
PHP连接MSSQL方法汇总
Feb 05 PHP
php解析mht文件转换成html的实例
Mar 13 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 PHP
safari下载文件自动加了html后缀问题
Nov 09 #PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 08 #PHP
PHP校验15位和18位身份证号的类封装
Nov 07 #PHP
php中如何执行linux命令详解
Nov 06 #PHP
laravel中的一些简单实用功能
Nov 03 #PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 #PHP
yii2 上传图片的示例代码
Nov 02 #PHP
You might like
PHP多进程编程实例
2014/10/15 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
php7性能提升的原因详解
2019/10/13 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
Javascript技术难点之apply,call与this之间的衔接
2015/12/04 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
python实现巡检系统(solaris)示例
2014/04/02 Python
python中sleep函数用法实例分析
2015/04/29 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
我的五年职业生涯规划
2014/01/23 职场文书
接受捐赠答谢词
2014/01/27 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
召开会议通知范文
2015/04/15 职场文书
学校标语口号大全
2015/12/26 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript