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 获取即可
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
