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