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 相关文章推荐
第十三节--对象串行化
Nov 16 PHP
PHP6 先修班 JSON实例代码
Aug 23 PHP
PHP 字符串 小常识
Jun 05 PHP
Yii PHP Framework实用入门教程(详细介绍)
Jun 18 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 PHP
浅析php创建者模式
Nov 25 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
php微信开发自定义菜单
Aug 27 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 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 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
原生javascript实现图片按钮切换
2015/01/12 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
python3人脸识别的两种方法
2019/04/25 Python
Python3.8中使用f-strings调试
2019/05/22 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
python 命令行传入参数实现解析
2019/08/30 Python
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
什么是View State?
2013/01/27 面试题
高级人员简历的自我评价分享
2013/11/03 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
元旦晚会活动总结
2014/07/09 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
安全员岗位职责范本
2015/04/11 职场文书