laravel - Vue / Laravel:如何验证从前端上传的文件?
问题描述
我的 Vue 应用程序上有一个图像上传器,它需要多个文件。我想确保它们是图像并且具有一定的大小,如果不是,显然不要上传文件并让前端显示错误。现在,它在控制器中命中的路由如下所示:
public function uploadAssets(UploadAssetsFormRequest $request)
{
if ($request->hasFile('file')) {
$files = $request->file('file');
$stack = [];
foreach ($files as $file) {
$fileName = Storage::put('/check/', file_get_contents($file->getRealPath()), ['visibility' => 'public']);
array_push($stack, $fileName);
}
return response()->json($stack);
}
}
我的表单请求在下面并且有验证,但我不知道如何在控制器中应用它。
UploadAssetsFormRequest
<?php
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
class UploadAssetsFormRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'files.*' => 'required|image|max:1000',
];
}
public function messages()
{
return [
'files.*.max' => 'The image is too large',
'files.*.image' => 'Only image files are allowed.',
];
}
}
解决方案
您可以在验证中设置以下规则 -
'file' => 'required|max:100|mimes:jpg,png,bmp' // 100kb, mimes must have image extensions
推荐阅读
- python-3.x - 嵌套循环的更有效方法
- soap - SOAP 服务调用的 Junit
- mysql - 通过每个时间戳在查询中迭代计算
- nginx - 使用 Nginx 中的代理无法加载 Css 文件
- java - Java < 15 和 >= 15 的不同 Nashorn 引擎?
- r - dplyr ifelse 和 if_else 将日期变成双精度
- webpack-5 - 当我更新到 webpack5 时,出现错误:配置有一个未知属性“之前”
- amazon-web-services - 将 Azure 管道变量作为参数传递给 AWS Cloudformation 模板,类型为:数字
- python - 熊猫在读取 csv 时无法识别日期
- python - Transpose/Pivot DataFrame 但不是同一行中的所有列