关于laravel上传的文件验证或者的表示?

比如表单中有个 file 文件选择框

<input type="file" name="file[]">

我的需求是它既可以上传所有的图片类型,又可以上传.rar .wav .mp3 这些文件,表单验证该怎么写呢?写一起是不是表示是且的关系,都要满足,如何表示或者关系呢?普通的php代码判断我是知道的,就是这个laravel表单Validator验证器 不知道怎么表示或者的关系?

'file.*' => 'required|file|image'

这个表示所有图片文件了,那如何表示剩下 .rar 哪些或者关系呢?

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6
Epona
'photo' => 'mimes:jpg,bmp,png'

可以用mimes规则来判断

3年前 评论
欲饮琵琶码上催 (楼主) 3年前
随波逐流 3年前
欲饮琵琶码上催 (楼主) 3年前
随波逐流

你的上传文件类型不一致, 可能时压缩文件, 图片, 所以你不能用image

// mimetypes vendor\swiftmailer\swiftmailer\lib\swiftmailer_generate_mimes_config.php
        $this->validate($request, [
            'files'   => ['required', 'array', 'max:5'],
            'files.*' => ['file', 'mimetypes:application/x-rar-compressed,audio/mpeg,audio/wav']
        ]);
3年前 评论
欲饮琵琶码上催 (楼主) 3年前

file 刚才用了你的这个方法 ,那我想要所有类型的图片,不会要我全部把图片都给一个一个把类型给写上去吧。

3年前 评论
随波逐流 3年前

我会选择使用自定义的规则来实现

php artisan make:rule FileRule
namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;
use Illuminate\Validation\Concerns\ValidatesAttributes;

class FileRule implements Rule
{
    use ValidatesAttributes;

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return $this->validateImage($attribute, $value)
            || $this->validateMimes($attribute, $value, ['rar', 'wav', 'mp3']);
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The validation error message.';
    }
}
'file.*' => 'required|file|new FileRule'
3年前 评论

此贴终结,就是用楼上的大哥的方法是最好的,以前都不知道,今天算是又get到新的知识点。感谢,希望后来的人可以有收获

3年前 评论
欲饮琵琶码上催 (作者) (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!