经过大量搜索,没有运气找到解决方案。
我在laravel 4.2。*中验证输入文件。使用模型验证规则,但规则不适合我。
我在我的model.php中使用的规则
'reqfile' => 'mimes:txt,pdf,doc,docx|max:20000'
和
'reqfile' => 'mimes:application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,text/plain,application/pdf|max:20000'
应用这些规则后,会生成验证错误,但错误也会出现在有效的文件选择中。
这里有人告诉我,我在哪里应用规则是错误的。 在此先感谢。
答案 0 :(得分:0)
要使此验证程序规则起作用,您需要确保为reqfile
验证的值是以下实例:
Symfony\Component\HttpFoundation\File\File
或
Symfony\Component\HttpFoundation\File\UploadedFile
因此,如果您要验证表单,reqfile
必须是上传的文件。这意味着它的价值应来自Input::file()
。所以你的验证器应该是这样的:
Validator::make(
// Value for reqfile
array('reqfile' => Input::file('reqfile')),
// Validator rule for reqfile
array('reqfile' => 'mimes:txt,pdf,doc,docx|max:20000')
);
验证规则实际上会尝试通过提取mime类型来猜测扩展,并将其与传递给规则的扩展列表进行比较。这意味着您需要将文件扩展名传递给规则,而不是实际的mime类型,因为documentation明确指出:
正在验证的文件必须具有与所列扩展名之一
对应的MIME类型