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

最近在弄抓取数据,自然而然用到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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值