0

我想使用 valid_file_mimetypes、valid_image_mimetypes 来验证 config/lfm.php 中的文件。有效文件模拟类型:

'valid_image_mimetypes' => [
    'image/jpeg',
    'image/pjpeg',
    'image/png',
    'image/gif',
    'image/svg+xml',
],

'valid_file_mimetypes' => [
        'image/jpeg',
        'image/pjpeg',
        'image/png',
        'image/gif',
        'image/svg+xml',
        'application/pdf',
        'application/rtf',
        'application/vnd',
        'application/msword',
        'application/vnd.ms-excel',
        'application/vnd.ms-powerpoint',
        'application/vnd.oasis.opendocument.text',
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
        'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
        'application/vnd.openxmlformats-officedocument.presentationml.presentation',
        'text/plain',
    ];

我把它们改写了。这是我的代码:

protected function getValidatorMimes($field)
{
    $mimes = [];

    foreach (config('lfm.' . 'valid_' . $field . '_mimetypes') as $mime) {
        $mimes[] = explode('/', $mime)[1];
    }

    return 'mimes:' . implode(',', $mimes);
} 

该函数将返回这个,例如:

'mimes:jpeg,pjpeg,png,gif,svg+xml,pdf,rtf,vnd,msword,vnd.ms-excel,vnd.ms-powerpoint,vnd.oasis.opendocument.text,vnd.openxmlformats-officedocument.spreadsheetml.sheet,vnd.openxmlformats-officedocument.wordprocessingml.document,officedocument.presentationml.presentation,plain'

我在验证时使用它。

$rules = [];
foreach ($fields as $field) {
    $rules[$field] = $this->getValidatorMimes($field);
}

$validator = Validator::make(Request::all(), $rules);

但此验证不会跳过单个文件。

我的验证规则正确吗?请帮我?我不知道如何正确使用 mimetypes。

4

1 回答 1

0

解决这个问题很容易。我只是看不够。在这种情况下,我只需要“mimetypes:”而不是“mimes:”。

protected function getValidatorMimes($field)
{
    $mimes = [];

    foreach (config('lfm.' . 'valid_' . $field . '_mimetypes') as $mime) {
        $mimes[] = explode('/', $mime)[1];
    }

    return 'mimetypes:' . implode(',', $mimes);
}
于 2019-08-23T05:54:27.493 回答