首页 > 解决方案 > 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.',
        ];
    }
}

标签: laravelvue.jslaravel-5

解决方案


您可以在验证中设置以下规则 -

 'file' => 'required|max:100|mimes:jpg,png,bmp' // 100kb, mimes must have image extensions

推荐阅读