【黄啊码】PHP将远程资源保存到本地

举报
黄啊码 发表于 2022/07/05 00:29:58 2022/07/05
【摘要】   啊码一般废话比较少,直接甩代码,不懂扣我,再不懂就只能扣脚丫了,OK? /** * 将远程资源保存到本地 * @param string $source 资源地址 * @param string $local 本地地址 * @return array */private function execDown($s...

  啊码一般废话比较少,直接甩代码,不懂扣我,再不懂就只能扣脚丫了,OK?


  
  1. /**
  2. * 将远程资源保存到本地
  3. * @param string $source 资源地址
  4. * @param string $local 本地地址
  5. * @return array
  6. */
  7. private function execDown($source,$local)
  8. {
  9. if (!is_dir(dirname($local))) {
  10. mkdir(dirname($local),0755,true);
  11. }
  12. $localFile = fopen($local, 'w');
  13. $ch = curl_init(); // 初始化 cURL 会话
  14. curl_setopt($ch,CURLOPT_URL,$source); // 远程地址
  15. curl_setopt($ch, CURLOPT_POST, 0); // 非POST请求
  16. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3000); // 最长等待连接成功时间
  17. curl_setopt($ch, CURLOPT_FILE, $localFile); // 本地路径
  18. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // https请求 不验证证书
  19. curl_exec($ch);
  20. if (curl_error($ch)) {
  21. $res = [
  22. 'status' => 0,
  23. 'message' => curl_error($ch),
  24. 'time' => 0,
  25. 'fileinfo' => []
  26. ];
  27. fclose($localFile);
  28. curl_close($ch);
  29. return $res;
  30. } else {
  31. $info = curl_getinfo($ch);
  32. curl_close($ch);
  33. fclose($localFile);
  34. if (filesize($local) != $info['size_download']) {
  35. $res = [
  36. 'status' => 0,
  37. 'message' => '下载数据不完整,请重新下载',
  38. 'time' => $info['total_time'],
  39. 'fileinfo' => []
  40. ];
  41. return $res;
  42. }
  43. $res = [
  44. 'status' => 1,
  45. 'message' => '下载完成',
  46. 'time' => $info['total_time'],
  47. 'fileinfo' => [
  48. 'file_type' => $info['content_type'],
  49. 'file_size' => $info['size_download'],
  50. 'remote_path' => $source,
  51. 'local_path' => $local,
  52. ]
  53. ];
  54. return $res;
  55. }
  56. }

文章来源: markwcm.blog.csdn.net,作者:黄啊码,版权归原作者所有,如需转载,请联系作者。

原文链接:markwcm.blog.csdn.net/article/details/125594024

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。