使用php保存远程文件到本地服务器 使用php保存远程文件到本地服务器

使用php保存远程文件到本地服务器

最近写了个小东西,获取到json中mp3文件url地址,保存到服务器上。以前我保存图片时,使用file_put_contents($save_path, $file)函数就能解决,但这次保存音频文件到服务器上,就不行了,全成了1kb的小文件,后来改成curl来下载音频文件,完美解决,并且通用,函数如下:
/**
 * @param string $file_url 下载文件地址
 * @param string $save_path 下载文件保存目录
 * @param string $file_name 下载文件保存名称
 * @return bool
 */
function curlDownFile($file_url, $save_path = '', $file_name = '') {
	
	// 没有远程url或已下载文件,返回false
    if (trim($file_url) == '' || file_exists( $save_path.$file_name )) {
        return false;
    }
	
	// 若没指定目录,则默认当前目录
    if (trim($save_path) == '') {
        $save_path = './';
    }

    // 若指定的目录没有,则创建
    if (!file_exists($save_path) && !mkdir($save_path, 0777, true)) {
        return false;
    }
	
	// 若没指定文件名,则自动命名
    if (trim($file_name) == '') {
        $file_ext = strrchr($file_url, '.');
        $file_exts = array('.gif', '.jpg', '.png','mp3');
        if (!in_array($file_ext, $file_exts)) {
            return false;
        }
        $file_name = time() . $file_ext;
    }

    // curl下载文件
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $file_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file = curl_exec($ch);
    curl_close($ch);

    // 保存文件到指定路径
    file_put_contents($save_path.$file_name, $file);

	// 释放文件内存
    unset($file);
	
	// 执行成功,返回true
    return true;
}

转载:https://www.psay.cn/code/119.html

评论 0

挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论