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