【黄啊码】PHP将远程资源保存到本地
【摘要】
啊码一般废话比较少,直接甩代码,不懂扣我,再不懂就只能扣脚丫了,OK?
/** * 将远程资源保存到本地 * @param string $source 资源地址 * @param string $local 本地地址 * @return array */private function execDown($s...
啊码一般废话比较少,直接甩代码,不懂扣我,再不懂就只能扣脚丫了,OK?
-
/**
-
* 将远程资源保存到本地
-
* @param string $source 资源地址
-
* @param string $local 本地地址
-
* @return array
-
*/
-
private function execDown($source,$local)
-
{
-
if (!is_dir(dirname($local))) {
-
mkdir(dirname($local),0755,true);
-
}
-
$localFile = fopen($local, 'w');
-
$ch = curl_init(); // 初始化 cURL 会话
-
curl_setopt($ch,CURLOPT_URL,$source); // 远程地址
-
curl_setopt($ch, CURLOPT_POST, 0); // 非POST请求
-
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3000); // 最长等待连接成功时间
-
curl_setopt($ch, CURLOPT_FILE, $localFile); // 本地路径
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // https请求 不验证证书
-
curl_exec($ch);
-
if (curl_error($ch)) {
-
$res = [
-
'status' => 0,
-
'message' => curl_error($ch),
-
'time' => 0,
-
'fileinfo' => []
-
];
-
fclose($localFile);
-
curl_close($ch);
-
return $res;
-
} else {
-
$info = curl_getinfo($ch);
-
curl_close($ch);
-
fclose($localFile);
-
if (filesize($local) != $info['size_download']) {
-
$res = [
-
'status' => 0,
-
'message' => '下载数据不完整,请重新下载',
-
'time' => $info['total_time'],
-
'fileinfo' => []
-
];
-
return $res;
-
}
-
$res = [
-
'status' => 1,
-
'message' => '下载完成',
-
'time' => $info['total_time'],
-
'fileinfo' => [
-
'file_type' => $info['content_type'],
-
'file_size' => $info['size_download'],
-
'remote_path' => $source,
-
'local_path' => $local,
-
]
-
];
-
return $res;
-
}
-
}
文章来源: markwcm.blog.csdn.net,作者:黄啊码,版权归原作者所有,如需转载,请联系作者。
原文链接:markwcm.blog.csdn.net/article/details/125594024
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)