php 通過圖片或視頻鏈接 獲取文件二進制流


  /**
     * @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;
    }

 

聲明 本人博客的所有東西,部分源於網絡書籍和視頻,其他的是個人的理解感悟,經過自己整理撰寫成博客。 本人博客均只用於個人學習、復習,不作為商業用途,如有侵權,請聯系我修改或刪除。 聯系郵箱:15121014713@163.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM