我设置了一个验证器来检查我们上传的文档是否为XML文件
if ($request->input('action') == 'upload_document') {
$validator = Validator::make($request->all(), [
'file' => 'bail|required|mimes:application/xml,xml|max:10000',
]
);
}
但是当我上传文件时,这个验证器会触发一个错误“File must e of type application/xml,xml”,即使我删除了一个扩展名为.xml的真实的XML文件。
我在我的php.ini配置扩展=php_fileinfo.dll当然
3条答案
按热度按时间dgsult0t1#
请注意,mime类型验证指示Laravel读取文件的内容以确定其类型,因此将映像扩展名从
.jpg
更改为.xml
不会欺骗它从文档中
**哑剧:*foo,酒吧 ,...
要验证的文件必须具有与列出的扩展名之一对应的MIME类型。
MIME规则的基本用法
即使您只需要指定扩展名,此规则实际上也会通过阅读文件的内容并猜测其MIME类型来验证文件的MIME类型。
可在以下位置找到MIME类型及其相应扩展名的完整列表:https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
因此,请确保您的文件是来自Laravel项目的实际有效的xml文件(尝试使用phpunit.xml
像这样的表格
结果:
但是当用
image.xml
测试时或者,您也可以通过扩展名进行验证
现在,扩展名为
xml
的图像文件通过了验证请参阅使用闭包进行自定义验证
8cdiaqws2#
外部公司提供的XML似乎没有遵守适当的XML标准。
由于它不在我的手上,我不会重新格式化它,我将不得不管理它作为文本。所以我想我不能使用验证器在我的情况。
yi0zb3m43#
对于那些试图在Laravel 5上传递XML扩展的人(像我一样)。这也将与其他附加扩展一起工作。
由于Laravel ExtensionGuesser允许通过方法寄存器添加自定义猜测器,因此我们执行以下操作。
1.用自己的扩展数组创建一个新的类。我把它扩展到了原来的类,这样它就对应了接口。我把它放到了Helpers文件夹中。
1.在你的控制器中(不要忘记使用语句):
现在,guesser检查Prior* 类中的数组,然后转到原始数组。