PHP实现远程下载文件到本地
在编写采集器发布接口时,我们经常需要使用远程附件功能。为此,我特意编写了一个PHP函数,用于远程下载文件到本地。这个函数简洁实用,如果服务器支持CURL函数,它将优先使用CURL进行文件传输。有需要的小伙伴们,不妨参考一下。
接下来,我将直接分享这个函数的具体实现。
```php
echo httpcopy(" // 示例调用函数下载图片
function httpcopy($url, $file = "", $timeout = 60) {
// 如果未指定文件名,则使用URL中的文件名作为本地文件名
$file = empty($file) ? pathinfo($url, PATHINFO_BASENAME) : $file;
// 创建文件目录(如果不存在)
$dir = pathinfo($file, PATHINFO_DIRNAME);
!is_dir($dir) && @mkdir($dir, 0755, true);
// URL中的空格替换为"%20",避免下载出错
$url = str_replace(" ", "%20", $url);
// 检查服务器是否支持CURL函数
if (function_exists('curl_init')) {
// 使用CURL进行文件下载
$ch = curl_init();
curl_set($ch, CURLOPT_URL, $url);
curl_set($ch, CURLOPT_TIMEOUT, $timeout);
curl_set($ch, CURLOPT_RETURNTRANSFER, TRUE);
$temp = curl_exec($ch);
if (@file_put_contents($file, $temp) && !curl_error($ch)) {
return $file; // 成功返回文件路径
} else {
return false; // 下载失败返回false
}
} else {
// 服务器不支持CURL函数时,使用流上下文进行下载
$opts = array(
"http" => array(
"method" => "GET",
"header" => "",
"timeout" => $timeout)
);
$context = stream_context_create($opts);
if (@copy($url, $file, $context)) {
return $file; // 成功返回文件路径
} else {
return false; // 下载失败返回false
}
}
}
?>
编程语言
- PHP实现远程下载文件到本地
- 微信公众号开发之通过接口删除菜单
- vue router路由嵌套不显示问题的解决方法
- jquery中radio checked问题
- 关于visual studio 2012 update 2中的新功能介绍
- easyui的tabs update正确用法分享
- JavaScript来实现打开链接页面的简单实例
- php生成二维码时出现中文乱码的解决方法
- 详解PHP多个进程配合redis的有序集合实现大文件去
- 为密码文本框要求不可粘帖字符串只可手动输入
- Javascript中数组sort和reverse用法分析
- PHP基于工厂模式实现的计算器实例
- 文本框只能输入数字的实现方法(兼容IE火狐)
- 深入理解PHP几个算法-PHP冒泡、PHP二分法、PHP求素
- 微信小程序(十三)progress组件详细介绍
- easy ui datagrid 从编辑框中获取值的方法