【问题标题】:Symfony2 - How to validate if the uploaded file is a tex file (LaTex)Symfony2 - 如何验证上传的文件是否是 tex 文件(LaTex)
【发布时间】:2013-12-18 08:42:19
【问题描述】:

我的 Symfony2 项目中有一个文件上传功能,我想验证上传的文件是 .tex 文件格式 => LaTex 文件。 对于文本/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 文件?谢谢。

【问题讨论】:

  • 您是否启用了php_fileinfo 扩展?看看这里:stackoverflow.com/questions/12896222/…
  • @Max,htm/html验证有效,而且它也是使用mime_type,所以应该启用它。
  • 您可以确定:只需执行phpinfo() 并搜索fileinfo。如果您在列表中找到它,则它已启用。至少你可以划掉一个可能的问题。
  • 谢谢。文件信息与版本 1.0.5-dev 一起存在
  • 我几乎没有想法,但可能会查看文件验证器的源代码并尝试查看他是否获得了正确的文件 MIME 类型。请记住 MIME 类型只是一个建议,您不应过分依赖它。祝你好运!

标签: php validation symfony latex mime-types


【解决方案1】:

我认为同样的图像验证原则也可以应用在这里。信任 mime-type 是不可靠的,因为用户可以在 image/jpeg 中植入 php 可执行文件。

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

也许是这个:PHPLatex

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

【讨论】:

    【解决方案2】:

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

    你能在流中搜索\documentclass 指令吗? 或者,如果您控制客户端机器,例如在工作或大学,你能得到他们注册的 mime 类型吗?

    【讨论】:

      【解决方案3】:

      我认为你必须使用application/x-latex mime-type

      【讨论】:

      • 嗨,艾哈迈德,不幸的是,这不起作用,我收到验证器错误消息。
      • 我也尝试使用 application/x-tex,因为我的文件是 .tex 格式,但它不工作
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 2013-11-16
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 2021-10-18
      相关资源
      最近更新 更多