diff --git a/app/UploadFiles.php b/app/UploadFiles.php index 06acfef..0c9f256 100644 --- a/app/UploadFiles.php +++ b/app/UploadFiles.php @@ -57,13 +57,28 @@ class UploadFiles if (empty($type)) { return json_message('缺少类型参数'); } + $dir_name = $request->param('dir', $type); $file = request()->file('file'); + + try { + + self::fileScan($file); + + $model_file = self::saveFile($file, $type, $dir_name); + return json_message($model_file->toArray()); + } catch (\Throwable $th) { + return json_message($th->getMessage()); + } + } + + public static function fileScan($file) + { $file_extension = $file->extension(); if ($file_extension == 'php') { - return json_message('上传文件异常'); + throw new \Exception('上传文件异常'); } $file_path = $file->getRealPath(); @@ -71,34 +86,58 @@ class UploadFiles $file_content = file_get_contents($file_path); if (strpos($file_content, 'param('dir', $type); - try { - $model_file = self::saveFile($file, $type, $dir_name); - return json_message($model_file->append(['src'])->toArray()); - } catch (\Throwable $th) { - return json_message($th->getMessage()); + throw new \Exception('上传失败'); } } - public static function saveFile(File $file, $type, $dir_name = null) + public static function wangEditorSave(Request $request) + { + + $type = $request->param('type'); + if (empty($type)) { + return json_message('缺少类型参数'); + } + $dir_name = $request->param('dir', $type); + + $files = $request->file(); + + $saved_files_src = []; + + foreach ($files as $file) { + try { + + self::fileScan($file); + + $saved_files_src[] = self::saveFile($file, $type, $dir_name)->src; + } catch (\Throwable $th) { + return json_message($th->getMessage()); + } + } + + return json([ + "errno" => 0, + "data" => $saved_files_src + ]); + } + + public static function saveFile($file, $type, $dir_name = null) { if (is_null($dir_name)) { $dir_name = $type; } $model_file = UploadFiles::add(); + if ($file instanceof UploadedFile) { $model_file->file_name = $file->getOriginalName(); } else { $model_file->file_name = $file->getFilename(); } + $model_file->mime_type = $file->getMime(); $model_file->ext_name = $file->extension(); $model_file->file_size = $file->getSize(); @@ -109,13 +148,28 @@ class UploadFiles $model_file->save_name = Filesystem::putFile('upload/' . $dir_name, $file, 'uniqid'); $model_file->save(); + $model_file->append(['src']); return $model_file; } public static function saveUrlFile($url, $type) { $file_data = geturl($url); + return json_message(self::saveData($file_data, $type)->toArray()); + } + public static function saveBase64File($file_data, $type) + { + if (strstr($file_data, ",")) { + $file_data = explode(',', $file_data); + $file_data = $file_data[1]; + } + $file_data = base64_decode($file_data); + return json_message(self::saveData($file_data, $type)->toArray()); + } + + public static function saveData($file_data, $type) + { $mime_type = MimeType::detectByContent($file_data); $ext_name = array_search($mime_type, MimeType::getExtensionToMimeTypeMap()); $temp_file = tempnam(app()->getRuntimePath(), 'url_save_') . '.' . $ext_name;