Php Symfony2-如何验证上载的文件是否为tex文件(LaTex)

Php Symfony2-如何验证上载的文件是否为tex文件(LaTex),php,validation,symfony,latex,mime-types,Php,Validation,Symfony,Latex,Mime Types,我的Symfony2项目中有一个文件上传功能,我想验证上传的文件是否为.tex文件格式=>LaTex文件。 对于text/html,我使用: $metadata->addPropertyConstraint('file', new Assert\File(array( 'maxSize' => '100000k', 'mimeTypes' => array("text/html"), 'mimeTypesM

我的Symfony2项目中有一个文件上传功能,我想验证上传的文件是否为
.tex
文件格式=>LaTex文件。 对于text/html,我使用:

$metadata->addPropertyConstraint('file', new Assert\File(array(
            'maxSize' => '100000k',
            'mimeTypes' => array("text/html"),
            'mimeTypesMessage' => 'Please upload a valid HTM/HTML File',
    )));
我正在努力:

 $metadata->addPropertyConstraint('file', new Assert\File(array(
            'maxSize' => '100000k',
            'mimeTypes' => array(
                   'text/html',
                    'application/x-tex',
                    'application/x-latex'
             ),
            'mimeTypesMessage' => 'Please upload a valid HTM/HTML/TEX File',
    )));
但是,当我上传一个.tex文件时,我会收到一条信息:

Please upload a valid HTM/HTML/TEX File.

如何在此处添加Tex文件?谢谢。

我认为您必须使用
应用程序/x-latex
我认为同样的图像验证原则也可以在这里应用。信任mime类型是不可靠的,因为用户可以在
image/jpeg
中植入
php
可执行文件

对于图像,可以使用
getimagesize()
函数验证这一点。至于
LaTeX
,您需要一些第三方库来尝试打开上传的文件,并在出现错误时抛出异常(无效的文件格式、无效的表达式等)

也许是这个:


另外,当您尝试上载文件时,您得到了哪种mime类型?(@Ahmed的想法)

除非提交的客户“知道”tex文件已注册为application/x-tex,否则我相信该客户不会这样发送

您可以在流中搜索
\documentclass
指令吗?
或者,如果您控制客户机,例如在工作或大学,您可以在其上注册mime类型吗?

嗨,Ahmed,很遗憾,这不起作用,我收到了验证程序错误消息。我还尝试了应用程序/x-tex,因为我的文件是.tex格式,但它不工作您是否启用了
php\u fileinfo
扩展?请看这里:@Max,htm/html验证有效,而且它也使用mime_类型,因此应该启用它。您可以确定:只需执行
phpinfo()
并搜索
fileinfo
。如果您在列表中找到它,它将被启用。至少你可以划掉一个可能的问题。谢谢。文件信息与版本1.0.5-devI在一起,我几乎没有主意了,但是也许可以查看文件验证程序的源代码,看看他是否得到了正确的文件MIME类型。请记住,MIME类型只是一个建议,您不应该过分依赖它。祝你好运