php 通过图片或视频链接 获取文件二进制流

全屏阅读
  • 基本信息
  • 作者:
  • 作者已发布:920篇文章
  • 发布时间:2022年06月12日 10:26:54
  • 所属分类:Linux, PHP
  • 阅读次数:689次阅读
  • 标签:
/**
     * @param URL转换本地绝对路径
     * @param string $url 目标地址
     * @param addtime 2021年9月1日     */
    public function getlocalURL($val)
    {        $pathinfos = pathinfo($val);        $tzm       = $pathinfos['extension'];        $save_dir  = "./temps/"; // 服务资源目录
        $filename  = date('Ymd') . time() . '.' . $tzm; // 自定义名称
        # 检测文件大小
        $Size  = $this->getFileSize($val);        $file1 = '';        // 超过10M不保存
        $result = $this->getFile($val, $save_dir, $filename, 1);        //   if ($Size < 10) {}else{
        //     echo '下载失败';
        // }
        if ($result['code'] == 200) {            $file1 = '/home/www/wwwroot/jzt_admin_tp/public/temps/' . $result["fild_name"];
        }        return $file1;
    }    /**
     * @param URL获取本地FILE
     * @param string $url 目标地址
     * @param addtime 2021年9月1日     */
    public function getFiles($url)
    {        //获取文件dir
        $file_dir = $url;        //使用file_exists判断文件是否存
        ob_end_clean();        ob_start();        //打开文件
        $handler   = fopen($file_dir, 'r+b');        $file_size = filesize($file_dir);        //声明头信息
        Header("Content-type: application/octet-stream");        Header("Accept-Ranges: bytes");        Header("Accept-Length: " . $file_size);        Header("Content-Disposition: attachment; filename=" . basename($file_dir));        // 输出文件内容
        return fread($handler, $file_size);        fclose($handler);        ob_end_flush();

    }

  /**
     * @param string $target_url 上传目标地址
     * @param string $filename 上传文件路径
     * @param string $form_name 表单名称     */
    public function curlUploadFile($target_url, $filename, $form_name)
    {        $uploadFileMimeType = mime_content_type($filename);        $post_data['file']  = curl_file_create($filename, $uploadFileMimeType, $form_name);        $ch                 = curl_init();
        curl_setopt($ch, CURLOPT_URL, $target_url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        $result = curl_exec($ch);
        curl_close($ch);        return $result;
    }    /**
     * 下载文件到服务器
     * addtime 2021年8月30日 09:38:43     */
    public function getFile($url, $save_dir = '', $filename = '', $type = 0)
    {        if (trim($url) == '') {            return false;
        }        if (trim($save_dir) == '') {            $save_dir = './';
        }        if (0 !== strrpos($save_dir, '/')) {            $save_dir .= '/';
        }        //创建保存目录
        if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {            return false;
        }        //获取远程文件所采用的方法
        if ($type) {            $ch      = curl_init();            $timeout = 5;
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);            $content = curl_exec($ch);
            curl_close($ch);
        } else {            ob_start();            readfile($url);            $content = ob_get_contents();            ob_end_clean();
        }        $size = strlen($content);        //文件大小
        $fp2 = @fopen($save_dir . $filename, 'a');        fwrite($fp2, $content);        fclose($fp2);        unset($content, $url);        $res['code']      = 200;        $res['fild_name'] = $filename;        return $res;
    }    /**
     * 检测文件大小
     * addtime 2021年9月1日     */
    public function getFileSize($url)
    {        $res      = get_headers($url, true);        $filesize = round($res['Content-Length'] / 1024 / 1024, 2); //四舍五入获取文件大小,单位M
        return $filesize;
    }

顶一下
(0)
100%
订阅 回复
踩一下
(0)
100%
» 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。

目前有 0 条留言 其中:访客:0 条, 博主:0 条

给我留言

您必须 [ 登录 ] 才能发表留言!