cURL-GET/POST/上传

1.最基本的抓取页面

<?php
	$cURL =  curl_init();//实例化curl对象
	curl_setopt($cURL,CURLOPT_URL,'www.baidu.com');
	curl_setopt($cURL,CURLOPT_RETURNTRANSFER,1);  //抓取到的结果不立即输出
	curl_setopt($cURL,CURLOPT_HEADER,0);  //header信息是否输出
	$result = curl_exec($cURL); //执行请求
	echo $result;
?>

2.带Get的请求。get 直接在URL加上参数domain?first=1&second=2

3.带POST的请求。

假设我们现在post两个东西。一个是字符串,一个是文件。

写两个脚本:

1.curl.php 用于处理模拟POST提交请求的

2.post.php验证CURL是否生效

<?php
        //post.php
	print_r($_POST);
	print_r($_FILES);
?>
<?php
	$ch = curl_init();
	$data = array('name' => 'Foo', 'file' => '@E:\wamp\www\1.jpg'); //绝对路径,且不建议有中文字符,必须加@告知是文件,否则当成字符串POST参数
	curl_setopt($ch, CURLOPT_URL, 'http://localhost/post.php');
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
	curl_exec($ch);
?>

运行,出现了如下问题:

Array
  (
  [name] => Foo
  )
  Array
  (
  [file] => Array
  (
  [name] => 1.jpg
  [type] => application/octet-stream
  [tmp_name] => E:\wamp\tmp\phpD8FF.tmp
  [error] => 0
  [size] => 91046
  )
   
  )

我们只要加上PHP本身的上传函数,就已经实现了不通过表单提交的上传操作。上面提示了

Deprecated

这个是说虽然这个方法可以用,但是不赞成使用这个方法。好像ereg_match,session_registers.

同时这个错误提示还给我们一个建议,使用CURLFile class来解决上传问题。

<?php

$ch = curl_init();

$data = array(‘name‘ => ‘Foo‘, ‘file‘ => new \CURLFile(realpath(‘1.jpg‘))); //绝对路径

curl_setopt($ch, CURLOPT_URL, ‘http://localhost/post.php‘);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_exec($ch);

?>

就是这么简单。开发的时候留心PHP的版本。如果代码在几个PHP版本下都有在部署。那么可以采取折中的方式。给与充分的判断。是采取@或者是调用CURLFile

时间: 2024-08-12 18:07:25

cURL-GET/POST/上传的相关文章

PHP curl 模拟POST 上传文件

<?php /** * Email [email protected] * author jackluo * 2014.11.21 * */ //* function curl_post($url, $data, $header = array()){ if(function_exists('curl_init')) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); if(is_array($header) && !e

curl的http上传文件代码

int http_post_file(const char *url, const char *user, const char *pwd, const char *filename){    assert(url != NULL);    assert(user != NULL);    assert(pwd != NULL);    assert(filename != NULL); int ret = -1;    CURL *curl = NULL;    CURLcode code; 

curl put方式上传文件

发送端 1 <?php 2 3 function curlPut($destUrl, $sourceFileDir, $headerArr = array(), $timeout = 10) 4 { 5 $ch = curl_init(); //初始化curl 6 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而不直接输出 7 curl_setopt($ch, CURLOPT_URL, $destUrl); //设置put到的ur

PHP curl put方式上传文件

发送端: <?php function curlPut($destUrl, $sourceFileDir, $headerArr = array(), $timeout = 10) { $ch = curl_init(); //初始化curl curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而不直接输出 curl_setopt($ch, CURLOPT_URL, $destUrl); //设置put到的url curl_setopt

php使用curl 实现GET和POST请求(抓取网页,上传文件),支持跨项目和跨服务器

一:curl 函数和参数详解 函数库:1:curl_init 初始化一个curl会话2:curl_close 关闭一个curl会话3:curl_setopt 为一个curl设置会话参数4:curl_error 返回一个包含当前会话错误信息的字符串5:curl_exec 执行一个curl会话6:curl_multi_add_handle 向curl批处理会话中添加单独的curl句柄资源7:curl_multi_close 关闭一个批处理句柄资源8:curl_multi_exec 解析一个curl批

curl上传图片(同域上传)

先研究完curl同域上传图片然后再研究curl跨域上传,先把同域上传代码总结如下: index.php <?php //图片上传 $url = "http://192.168.1.230/curl/receive.php"; $post_data = array ( "foo" => "bar", // 要上传的本地文件地址;从php5.5.0开始弃用@方式,改用new CURLFile()方式 "upload"

asp.net 模拟CURL调用微信公共平台API 上传下载多媒体文

近公司项目上在开发微信服务号的接口,需要给用户回复图片或语音或视频,这个时候就需要用到 上传下载多媒体文件接口,微信在这方面推荐采用的是开源函数库curl实现的,CURL项目包括很多版本,我主要测试的是windows 平台下的版本,是很好用的,下面附上说明及CURL下载地址在asp.net中,可以调用cmd命令行,运行这个脚本,实现上传下载的功能,但我需要讲的重点不在此,做为一个在线运行的项目,允许网站目录下可以运行.exe的程序是非常不安全的,所以接下来的DEMO是采用asp.net(c#)的

[PHP] CURL文件上传

一.说明 本文主要简述CURL进行文件上传的一般操作,基于TP5框架: 二.前端 代码如下,需要填入对应的上传地址还有修改接收的参数名字(这里是 file): <form action="上传地址" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <button type=

libcurl提交表单上传文件

不多说了,curl的http上传文件代码示例,有需要的可以参考. int http_post_file(const char *url, const char *user, const char *pwd, const char *filename){    assert(url != NULL);    assert(user != NULL);    assert(pwd != NULL);    assert(filename != NULL); int ret = -1;    CURL

使用libcurl进行文件上传

上篇博文讲到了如何使用multicurl来进行http并发访问,今天继续有关curl的主题,来八一八如何使用curl来上传文件,在介绍具体方法之前了解下目前http文件上传的基本实现. rfc1867描述了如何使用http协议来上传客户端文件,目前基本上所有的浏览器和web服务器都支持http文件上传,它的使用也十分的简单,具体的来说就是在页面上创建一个form表单,表单的enctype属性为multipart/form-data,action为接收上传文件的cgi url,请求方式为post,