Laravel验证器模仿规则对文档不起作用


Laravel validator mimes rule not working for documents

我试图上传文档文件为pdf, doc, docx。为了使我使用这些值:

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

输出:字符串(150)"应用程序/msword、应用程序/vnd.ms-office、应用程序/vnd.openxmlformats-officedocument.wordprocessingml.document、应用程序/pdf、应用程序/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

有人能帮忙吗?

从文档中,您可以这样使用它:

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

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

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