码迷,mamicode.com
首页 > Web开发 > 详细

cURL-GET/POST/上传

时间:2015-04-07 09:51:18      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:php

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


cURL-GET/POST/上传

标签:php

原文地址:http://blog.csdn.net/xeay123/article/details/44907463

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!