execute(function () use ($request) { $request->validate(['image' => ['required', 'image', 'mimes:jpg,jpeg,png,webp', 'max:10240']]); $image = $request->file('image'); // 扩展名按文件内容判断,不信任客户端文件名 $name = md5_file($image->getRealPath()) . '.' . ($image->extension() ?: 'webp'); $path = Storage::disk('public')->exists('images/' . $name) ? 'images/' . $name : $image->storeAs('images', $name, 'public'); return ['path' => Util::ensureUrl(Storage::url($path))]; }); } }