PHP实现远程下载文件到本地

网络编程 2025-03-14 14:40www.168986.cn编程入门

在编写采集器发布接口时,我们经常需要使用远程附件功能。为此,我特意编写了一个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

}

}

}

?>

上一篇:微信公众号开发之通过接口删除菜单 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by