get('type', 'default'); $file = $request->file(); $file = array_values($file)[0] ?? ''; if (empty($file)) { return sparkSuccess([ 'code' => 0, 'msg' => '未获取到文件' ]); } $upload_config = ['upload_type' => 'local', 'upload_allow_ext' => 'xbm,tif,pjp,svgz,jpg,jpeg,mp4,ico,tiff,gif,svg,jfif,webp,png,bmp,pjpeg,avif', 'upload_allow_size' => 10485760]; $upload_type = $upload_config['upload_type'] ?? 'local'; // $check = ['ext' => $file->getUploadExtension(), 'size' => $file->getSize(),]; // try { // Validator::input($check, [ // 'ext' => Validator::in(explode(',', $upload_config['upload_allow_ext']))->setName('文件后缀'), // 'size' => Validator::max($upload_config['upload_allow_size'])->setName('文件大小'), // ]); // } catch (ValidationException $e) { // return $this->apiError($e->getMessage()); // } $_rs = UploadService::instance()->setConfig($upload_config)->$upload_type($file, $type); $code = $_rs['code'] ?? 0; if ($code == 0) { return sparkSuccess([ 'code' => 0, 'msg' => '处理图片发生错误' ]); } else { // return $type == 'editor' ? json($_rs['data'] ?? []) : $this->sparkSuccess($_rs['data'] ?? ''); return json($_rs['data']); } } public function upload(Request $request) { $cateId = $request->input('cate_id', 0); $data = $this->base($request, '/upload/img/' . date('Ymd')); $realpath = $data['realpath']; try { $img = Image::make($realpath); $max_height = 1170; $max_width = 1170; $width = $img->width(); $height = $img->height(); $ratio = 1; if ($height > $max_height || $width > $max_width) { $ratio = $width > $height ? $max_width / $width : $max_height / $height; } $img->resize($width * $ratio, $height * $ratio)->save($realpath); } catch (\Exception $e) { unlink($realpath); return sparkSuccess([ 'code' => 500, 'msg' => '处理图片发生错误' ]); } // 存储入库 ComImages::insertGetId([ 'cate_id' => $cateId, 'name' => $data['name'], 'sha1' => '', 'url' => $data['url'], 'path' => $data['realpath'], 'ext' => $data['ext'], 'folder' => 'img', 'type' => 'local', 'create_time' => date('Y-m-d H:i:s') ]); return sparkSuccess([ 'code' => 0, 'msg' => '上传成功', 'data' => [ 'url' => $data['url'], 'name' => $data['name'], 'size' => $data['size'], ] ]); } protected function base(Request $request, $relative_dir): array { $relative_dir = ltrim($relative_dir, '/'); $file = current($request->file()); if (!$file || !$file->isValid()) { throw new BusinessException('未找到上传文件', 400); } $base_dir = base_path() . '/public/'; $full_dir = $base_dir . $relative_dir; if (!is_dir($full_dir)) { mkdir($full_dir, 0777, true); } $ext = strtolower($file->getUploadExtension()); $ext_forbidden_map = ['php', 'php3', 'php5', 'css', 'js', 'html', 'htm', 'asp', 'jsp']; if (in_array($ext, $ext_forbidden_map)) { throw new BusinessException('不支持该格式的文件上传', 400); } $relative_path = $relative_dir . '/' . bin2hex(pack('Nn', time(), random_int(1, 65535))) . ".$ext"; $full_path = $base_dir . $relative_path; $file_size = $file->getSize(); $file_name = $file->getUploadName(); $mime_type = $file->getUploadMimeType(); $file->move($full_path); $image_with = $image_height = 0; if ($img_info = getimagesize($full_path)) { [$image_with, $image_height] = $img_info; $mime_type = $img_info['mime']; } return [ 'url' => "/$relative_path", 'name' => $file_name, 'realpath' => $full_path, 'size' => $file_size, 'mime_type' => $mime_type, 'image_with' => $image_with, 'image_height' => $image_height, 'ext' => $ext, ]; } /** * 上传其他资源 */ public function uploadOtherFile() { set_time_limit(0); $file = request()->file('file'); $supplier_id = request()->input('supplier_id'); // 上传到本地服务器 try { // 存到本地 // $result = Storage::adapter('public')->path('storage/upload/txt')->size(1024*1024*5)->extYes(['text/plain'])->upload($file); $result = Storage::adapter('public')->path('storage/upload/annex/' . $supplier_id . '/')->extNo(['application/octet-stream'])->size(1024 * 1024 * 100)->reUpload($file, $file->getUploadName()); return sparkSuccess([ 'code' => 0, 'data' => [ 'url' => $result->file_url, 'name' => rtrim($result->origin_name) ], 'msg' => '上传成功' ]); } catch (\Exception $e) { return sparkSuccess(['code' => 500, 'data' => [], 'msg' => $e->getMessage()]); } } /** * 上传其他资源 */ public function uploadOtherFileReceive() { set_time_limit(0); $file = request()->file('file'); $supplier_id = request()->input('receive_id'); // 上传到本地服务器 try { // 存到本地 // $result = Storage::adapter('public')->path('storage/upload/txt')->size(1024*1024*5)->extYes(['text/plain'])->upload($file); $result = Storage::adapter('public')->path('storage/upload/receive/' . $supplier_id . '/')->extNo(['application/octet-stream'])->size(1024 * 1024 * 5)->reUpload($file, $file->getUploadName()); return sparkSuccess([ 'code' => 0, 'data' => [ 'url' => $result->file_url, 'name' => rtrim($result->origin_name) ], 'msg' => '上传成功' ]); } catch (\Exception $e) { return sparkSuccess(['code' => 500, 'data' => [], 'msg' => $e->getMessage()]); } } public function uploadOtherFileDispatch() { set_time_limit(0); $file = request()->file('file'); $supplier_id = request()->input('receive_id'); // 上传到本地服务器 try { // 存到本地 // $result = Storage::adapter('public')->path('storage/upload/txt')->size(1024*1024*5)->extYes(['text/plain'])->upload($file); $result = Storage::adapter('public')->path('storage/upload/dispatch/' . $supplier_id . '/')->extNo(['application/octet-stream'])->size(1024 * 1024 * 5)->reUpload($file, $file->getUploadName()); return sparkSuccess([ 'code' => 0, 'data' => [ 'url' => $result->file_url, 'name' => rtrim($result->origin_name) ], 'msg' => '上传成功' ]); } catch (\Exception $e) { return sparkSuccess(['code' => 500, 'data' => [], 'msg' => $e->getMessage()]); } } public function uploadOtherFileDirect() { set_time_limit(0); $file = request()->file('file'); $supplier_id = request()->input('receive_id'); // 上传到本地服务器 try { // 存到本地 // $result = Storage::adapter('public')->path('storage/upload/txt')->size(1024*1024*5)->extYes(['text/plain'])->upload($file); $result = Storage::adapter('public')->path('storage/upload/direct/' . $supplier_id . '/')->extNo(['application/octet-stream'])->size(1024 * 1024 * 5)->reUpload($file, $file->getUploadName()); return sparkSuccess([ 'code' => 0, 'data' => [ 'url' => $result->file_url, 'name' => rtrim($result->origin_name) ], 'msg' => '上传成功' ]); } catch (\Exception $e) { return sparkSuccess(['code' => 500, 'data' => [], 'msg' => $e->getMessage()]); } } public function uploadOtherFileCommon() { set_time_limit(0); $file = request()->file('file'); try { // 存到本地 $result = Storage::adapter('public')->path('storage/upload/annex/')->extNo(['application/octet-stream']) ->size(1024 * 1024 * 100) ->upload($file); return sparkSuccess([ 'code' => 0, 'data' => [ 'url' => $result->file_url, 'name' => rtrim($result->origin_name) ] ]); } catch (\Exception $e) { return sparkSuccess(['code' => 500, 'data' => [], 'msg' => $e->getMessage()]); } } public function uploadOtherFileMobile() { set_time_limit(0); $file = request()->file('file'); // 上传到本地服务器 try { // 存到本地 // $result = Storage::adapter('public')->path('storage/upload/txt')->size(1024*1024*5)->extYes(['text/plain'])->upload($file); $result = Storage::adapter('public')->path('storage/upload/apk')->extNo([''])->size(1024 * 1024 * 300)->reUpload($file, $file->getUploadName()); return sparkSuccess([ 'code' => 0, 'data' => [ 'url' => $result->file_name, 'full_url' => 'https://anquansys.sxlq.com:37100/' . $result->file_name, 'name' => rtrim($result->origin_name) ], 'msg' => '上传成功' ]); } catch (\Exception $e) { return sparkSuccess(['code' => 500, 'data' => [], 'msg' => $e->getMessage()]); } } }