cURL介绍

cURL是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。PHP也支持cURL 库。本文将介绍 cURL 的一些高级特性,以及在PHP中如何运用它。

PHP创建cURL的基本结构

1)初始化

curl_init()

2)设置变量

curl_setopt()

3)执行并获取结果

curl_exec()

4)释放cURL句柄

curl_close()

PHP cURl实现GET和POST

GET方式实现//初始化

$ch = curl_init();

//设置选项,包括URL

curl_setopt($ch, CURLOPT_URL, "http://loalhost/test.php");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);

//执行并获取HTML文档内容

$output = curl_exec($ch);

//释放curl句柄

curl_close($ch);

//打印获得的数据

print_r($output);

POST方式请求$url = "http://localhost/test.php";

$post_data = array('key' => 'value');

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// post数据

curl_setopt($ch, CURLOPT_POST, 1);

// post的变量

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

$output = curl_exec($ch);

curl_close($ch);

//打印获得的数据

print_r($output);

以上方式获取到的数据是json格式的,使用json_decode函数解释成数组。

$output_array = json_decode($output,true);

PHP不同版本之间cURL上传文件的区别

普通curl命令形式访问

curl -F "name=jason&file=@/tmp/test.jpg" htt://localhost/test.php

PHP的cURL类库上传文件

PHP的cURL支持通过给CURL_POSTFIELDS传递关联数组(而不是字符串)来生成multipart/form-data的POST请求。

传统上,PHP的cURL支持通过在数组数据中,使用“@+文件全路径”的语法附加文件,供cURL读取上传。这与命令行直接调用cURL程序的语法是一致的:

curl_setopt(ch, CURLOPT_POSTFIELDS, array(

'file' => '@'.realpath('image.png'),

));

$ curl -F "file=@/absolute/path/to/image.png"

PHP从5.5开始引入了新的CURLFile类用来指向文件。CURLFile类也可以详细定义MIME类型、文件名等可能出现在multipart/form-data数据中的附加信息。PHP推荐使用CURLFile替代旧的@语法:

curl_setopt(ch, CURLOPT_POSTFIELDS, [

'file' => new CURLFile(realpath('image.png')),

]);

PHP5.5另外引入了CURL_SAFE_UPLOAD选项,可以强制PHP的cURL模块拒绝旧的@语法,仅接受CURLFile式的文件。5.5的默认值为false,5.6的默认值为true。

注:PHP5.4及以下版本仅支持@语法形式;PHP5.5两种都是支持的,设置CURL_SAFE_UPLOAD=true强制使用CURLFile方式;PHP5.6+仅支持CURLFile方式,即使设置CURL_SAFE_UPLOAD=false也是毫无意义的。

参考资料

php文件上传 github,PHP的cURL文件上传相关推荐

  1. Github项目(克隆,上传)简单git命令流程使用记录

    github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,将本地代码上传,也就是代码要公开.同时,我们也可以使用其强大的git命令去clone ,fork ...

  2. mac使用 github 这一篇就足够啦 + 上传github出现 白色向右箭头处理方法

    1.mac使用 github 点击跳转 2.上传github出现 白色向右箭头处理方法 1.删除这个文件夹就可 2.小技巧 上传 github 或者 给别人文件时,记得删掉 node_modules包 ...

  3. php curl post 文件_php curl文件上传$_FILES为空,只有$_POST有值,如何兼容php5.0~5.6各版本...

    PHP 5.5以下用@,php5.5 @已被弃用,但勉强还能用,php5.6直接删除了@用法,必须得用new CURLFile(realpath('image.png'))这种方式才行了.关键我这还没 ...

  4. Android数据存储之文件存储(瞬时数据的存储与读取)项目已上传GitHub

    GitHub地址: https://github.com/Skymqq/FileSave.git 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然 ...

  5. 考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传

    最近做的一个需求,要通过PHP调用cURL,以multipart/form-data格式上传文件.踩坑若干,够一篇文章了. 重要警告 没事不要读PHP的官方中文文档!版本跟不上坑死你! 不同版本PHP ...

  6. 如何上传文件夹到GitHub上(配图详解)

    上传文件夹到GitHub 1.如果没有账号要先创建账号(有账号跳过此步骤) 2.建立一个仓库(有仓库跳过此步骤) 3.复制仓库地址 4.以下为本地操作 4.1.在本地新建一个空文件夹 4.2.上传文件 ...

  7. centos用php上传文件,WBB - Centos下PHP无法Curl模拟Post上传文件的问题

    有个产品需要上传图片到贴图库.为此还开了个贴图库的会员. 用的方案是ueditor+贴图库插件,自己加了个从dz拉过来的前端上传控件,然后禁用了Ueditor的上传按钮,毕竟数据先过一次后端再到贴图库 ...

  8. .git文件夹_如何使用git把本地代码上传(更新)到github上

    什么是git?git是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.git是一种工具,它能更好的让我们管理代码.很多时候如果我们需要保持本地代码和github代码版本 ...

  9. 如何用Git向GitHub上传送文件(从注册GitHub到用Git上传的每一步)

    文章目录 1.GitHub 1.1.GitHub注册(已经注册过的直接看1.2GitHub仓库的建立) 1.2 GitHub仓库的建立 2.Git 2.1Git 安装 2.2 Git 下载 2.3 G ...

最新文章

  1. Go 学习笔记(56)— Go 第三方库 sqlx (操作数据库)
  2. ubuntu数据库安装配置
  3. Oracle 小技巧
  4. 2018秋招面经:斗鱼、滴滴、百度、美团、小米、腾讯
  5. Chrome 隐藏 SSL 证书信息 禁止禁用 DRM
  6. 测试点3的分析:1022 D进制的A+B (20分)——15行代码AC
  7. php实现把es6转为es5,如何将ES6代码转化为ES5?
  8. 实例构造器与类型构造器
  9. Linux之find学习--详解
  10. Myeclipse中添加XFire插件支持
  11. redis 哨兵 异步_Redis稍微往上一点点写点集群
  12. 给浪费时间找种方法?
  13. 富国银行眼下乱成一团糟:数据中心被烟雾笼罩,银行网站和应用软件宕机
  14. Mysql 临时表详解(temporary table)
  15. excel两个表格数据对比_Excel跨表格数据对比
  16. Win8.1的IE缓存文件夹哪里去了?细说系统安装分区里那些带箭头的文件夹
  17. python的debug为什么点第一行直接运行结束了_Python 代码调试工具 pdb 快速入门
  18. python 爬虫 403 Forbidden
  19. ios直播开发基础,推流协议及流程
  20. java gef_GefExample GEF的例子,用于eclipse 学习,非常好的源码材料。 Java Develop 238万源代码下载- www.pudn.com...

热门文章

  1. win 2016 ssh_多台WIN10之间的SSH免密登录
  2. python进程池:multiprocessing.pool
  3. Page directive: illegal to have multiple occurrences of contentType with different values
  4. 计算机社团竞选优势6,社团社长竞选稿六篇
  5. php语言的四种循环控制语句,PHP循环控制语句
  6. 1.关于python
  7. 让VC编译的程序链接到系统的 msvcrt.dll 的方法
  8. oracle中OEM证书失效怎么办,安全证书过期怎么办 网站安全证书失效处理【解决方法】...
  9. php 递归展现城市信息,PHP 递归兑现层级树状展现数据
  10. 简单点赞效果html,js实现点赞效果