php curl 请求下载文件,以及同时向接口发送参数和文件

来源:互联网 发布:淘宝网中老年女装外套 编辑:程序博客网 时间:2024/06/05 18:33

最近在弄抓取数据,自然而然用到curl,结合其中遇到的一些问题,google了很久,加上自己尝试,最后都解决了。


首先是php curl 从url 下载文件

function getImage($url, $fileName)    {    $ch = curl_init();    $fp = fopen($fileName, 'wb');    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_FILE, $fp);    curl_setopt($ch, CURLOPT_HEADER, 0);    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    curl_setopt($ch, CURLOPT_TIMEOUT, 60);    curl_exec($ch);    curl_close($ch);    fclose($fp);    }    
$url 是一个图片的实际地址,$filename 是你要下载到本地存 的文件名。然后是php curl向接口同时发送 参数 和文件
public function Post($url,$data){    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL,$url);    curl_setopt($ch, CURLOPT_POST,1);    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);    $result=curl_exec ($ch);    curl_close ($ch);    }

针对上面参数 $data 说明:如果要涉及到文件传送,data 值 类似:
array('file'=>'@'.'文件的物理地址,就是存在你电脑上的地址');//多图的话就是array('file1'=>'@'.'文件的物理地址,就是存在你电脑上的地址','file2'=>'@'.'文件地址','file3'=>'@'.'文件地址' 以此类推);//也可以array('file[]'=>'@'.'文件的物理地址,就是存在你电脑上的地址','file[]'=>'@'.'文件地址','file[]'=>'@'.'文件地址' 以此类推);

@ 的话curl post 请求 就会把这个当成文件处理,所以设计到文件上传,必须加 @

上个函数的data 现在  就等于

data =array('file1'=>'@'.'文件的物理地址,就是存在你电脑上的地址','file2'=>'@'.'文件地址','file3'=>'@'.'文件地址' 以此类推);

 如果要同时发送 参数 和 文件,那么直接给$data 赋值即可:

如 

$data['user_id'] = 1;$data['username'] = 'admin';...

最后接受参数和文件的地方直接 用 

$_POST 和 $_FILES 获取即可

0 0