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随机数生成代码与使用实例分析
Apr 08 PHP
php数据库备份还原类分享
Mar 20 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
php中动态修改ini配置
Oct 14 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
Feb 15 PHP
php HTML无刷新提交表单
Apr 05 PHP
PHP将URL转换成短网址的算法分享
Sep 13 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
phpmyadmin下载、安装、配置教程
May 16 PHP
PHP实现权限管理功能示例
Sep 22 PHP
laravel 创建命令行命令的图文教程
Oct 23 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 Sql Server连接失败问题及解决办法
2009/08/07 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
PHP的拦截器实例分析
2014/11/03 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
python文件比较示例分享
2014/01/10 Python
Windows下安装python2.7及科学计算套装
2015/03/05 Python
Python随机读取文件实现实例
2017/05/25 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
python tkinter窗口最大化的实现
2019/07/15 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
Python decimal模块使用方法详解
2020/06/08 Python
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
建筑工程实习自我鉴定
2013/09/19 职场文书
企业车辆管理制度
2014/01/24 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
五好家庭事迹材料
2014/12/20 职场文书
公司辞职信模板
2015/05/13 职场文书
党支部评议意见
2015/06/02 职场文书
python 三边测量定位的实现代码
2021/04/22 Python