2015-09-03 34 views
3

我试图将文档文件上载为pdf,doc,docx。为了使我使用这个值:Laravel验证程序mimes规则不适用于文档

$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办公室,应用/ vnd.openxmlformats-officedocument.wordprocessingml.document,应用/ 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 

有人能帮忙吗?

回答

4

From the documentation,你用这样的:

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

试试这个,它应该工作:

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

$rules = [ 
    'document' => 'mimes:pdf'; 
]; 

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

周围默剧和扩展一个很大的混乱。解决了,谢谢! –