1. 程式人生 > 其它 >php 通過圖片或視訊連結 獲取檔案二進位制流

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