Php 如何在Symfony 2中检查上载的文件是否为pdf

Php 如何在Symfony 2中检查上载的文件是否为pdf,php,forms,symfony,pdf,Php,Forms,Symfony,Pdf,我正在验证我的一个表单,我需要检查上传的文件是否是pdf。我尝试在表单中使用文件约束,但它仍然让我传递一些不是pdf的内容(例如a.txt) 我是做错了还是应该用其他方法来做 我的表格: <?php namespace AdminBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Valid

我正在验证我的一个表单,我需要检查上传的文件是否是pdf。我尝试在表单中使用文件约束,但它仍然让我传递一些不是pdf的内容(例如a.txt)

我是做错了还是应该用其他方法来做

我的表格:

<?php

namespace AdminBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Validator\Constraints\File;

Class FormUpdateCV extends AbstractType
{
    public function buildForm(FormBuilderInterface $constructeur, array $options)
    {
        $format_fichier=new File(array(
                                'mimeTypes'=>'application/pdf',
                                'mimeTypesMessage'=>'Le fichier doit être un pdf'
                            ));

        $constructeur
        ->add('CV','file',array('label'=>'C.V.:', 'constraints'=>array($format_fichier)))
        ->add('mettreAJour','submit',array('label'=>'Mettre à jour'));
    }

    public function getName()
    {

        return 'update_CV';

    }
}

您可以直接在实体中添加约束。你觉得这个怎么样


在尝试了一些东西之后,我以前的状况似乎起了作用。例如,如果我有一个.pdf文件,并选择将扩展名更改为.txt,它仍然会将其识别为.pdf,但它仍然会更改控制器中的扩展名,所以这没问题。另一方面,如果我将.txt更改为.pdf,它仍然会将该文件识别为.txt,这很好,因为该文件无论如何都会读取wright。

它看起来非常有趣,但我没有bio文件的实体,我只是上传了它,所以需要在表单验证中完成。尝试了一些东西后,似乎我以前的条件确实有效。例如,如果我有一个.pdf文件,并选择将扩展名改为.txt,它仍然会将其识别为.pdf,但它仍然会在我的控制器中更改扩展名,所以这没问题。另一方面,如果我将.txt改为.pdf,它仍然会将该文件识别为.txt,这很好,因为该文件无论如何都会读取wright。但我还有一个问题,什么是x-pdf格式?
// src/Acme/BlogBundle/Entity/Author.php
namespace Acme\BlogBundle\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    /**
     * @Assert\File(
     *     maxSize = "1024k",
     *     mimeTypes = {"application/pdf", "application/x-pdf"},
     *     mimeTypesMessage = "Please upload a valid PDF"
     * )
     */
    protected $bioFile;
}