【问题标题】:Laravel validator mimes rule not working for documentsLaravel 验证器 mimes 规则不适用于文档
【发布时间】:2015-11-29 21:49:53
【问题描述】:

我正在尝试将文档文件上传为 pdf、doc、docx。为了让我使用这个值:

$mimes = [
      'doc' => [
        'application/msword',
        'application/vnd.ms-office'
      ],
      'docx' => [
        'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
      ],
      'pdf' => [
        'application/pdf',
        'application/x-pdf'
      ],
    ];

输出:string(150) "application/msword,application/vnd.ms-office,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/pdf,application/x-pdf"

文件上传后,我的任何类型的 mime 规则都失败了。

所以,我做这个测试:

$input = [
  'document' => $document // UploadedFile instance
];

$clientMime = $document->getClientMimeType() // output @example  application/pdf

$rules = [
  'document' => 'mimes:' . $clientMime;
];

$validator = Validator::make( $input, $rules );

$validator->fails()->errors() // mime fail

其他测试

上传 .jpg 文件(例如)mime 规则有效

$rules = [
  'document' => 'mimes:jpeg,jpg';
];

$validator = Validator::make( $input, $rules ); // all right

有人可以帮忙吗?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    From the documentation,你可以这样使用:

    'document' => 'mimes:pdf,doc'
    

    试试这个,它应该可以工作:

    $clientMime = $document->getClientMimeType() // output @example  application/pdf
    
    $rules = [
      'document' => 'mimes:pdf';
    ];
    
    $validator = Validator::make( $input, $rules );
    

    【讨论】:

    • 关于 mime 和扩展的一大困惑。已解决,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 2020-03-25
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 2016-08-17
    相关资源
    最近更新 更多