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 相关文章推荐
分页详解 从此分页无忧(PHP+mysql)
Nov 23 PHP
PHP 身份证号验证函数
May 07 PHP
深入php 正则表达式的学习探讨
Jun 06 PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
php正则替换处理HTML页面的方法
Jun 17 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
Jan 22 PHP
php连接mysql数据库
Mar 21 PHP
解决php-fpm.service not found问题的办法
Jun 06 PHP
php框架CodeIgniter主从数据库配置方法分析
May 25 PHP
PHP进阶学习之垃圾回收机制详解
Jun 18 PHP
php使用curl伪造浏览器访问操作示例
Sep 30 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
Cannot modify header information错误解决方法
2008/10/08 PHP
php下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
js操作滚动条事件实例
2015/01/29 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
使用PYTHON接收多播数据的代码
2012/03/01 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
Python 变量类型详解
2018/10/10 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
大学学年自我鉴定
2013/10/28 职场文书
小区门卫值班制度
2014/01/24 职场文书
关于旷工的检讨书
2014/02/02 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
JavaScript的function函数详细介绍
2021/11/20 Javascript
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android