PHP通过链接下载文件到本地磁盘

工作中遇到了,记录一下

<?php
$link = '';
down_file($link,'./down_path/','down_name','id');

/**
 * @param $url 文件下载地址
 * @param string $folder 文件存储地址
 * @param string $down_name 文件另存名称
 * @param string $id 文件id【多个文件为了区分加的,一般不用】
 * @return bool
 */
function down_file($url, $folder = "./", $down_name='', $id='')
{
    set_time_limit(0); // 设置超时时间
    $destination_folder = $folder . '/'; // 文件下载保存目录,默认为当前文件目录
    if (!is_dir($destination_folder)) { // 判断目录是否存在
        mkdirs($destination_folder); // 如果没有就建立目录
    }

    $down_name = explode('.', $down_name); // 因为数据库存的名称格式不统一,需要进行处理
    $down_name = $down_name[0]; // 根据自己需求判断是否需要以上两步

    $postfix = substr($url, strrpos($url, '.') + 1); // 取得文件后缀名
    $more_pre = '';
    if($id){
        $more_pre = $id . '-';
    }

    $newfname = $destination_folder . $more_pre . $down_name . '.' . $postfix; // 取得文件的名称

    $file = fopen($url, "rb"); // 远程下载文件,二进制模式
    if ($file) { // 如果下载成功
        $newf = fopen($newfname, "wb"); // 远在文件文件
        if ($newf) // 如果文件保存成功
            while (!feof($file)) { // 判断附件写入是否完整
                fwrite($newf, fread($file, 1024 * 8), 1024 * 8); // 没有写完就继续
            }

        fclose($file); // 关闭远程文件
        fclose($newf);
    }

    return true;
}

function mkdirs($path, $mode = "0755")
{
    if (!is_dir($path)) { // 判断目录是否存在
        mkdirs(dirname($path), $mode); // 循环建立目录
        mkdir($path, $mode); // 建立目录
    }
    return true;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值