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

时间:2015-07-19 20:08:11

标签: php forms symfony pdf

我正在处理我的某个表单的验证,我需要检查上传的文件是否为pdf。我尝试在我的表单中使用File约束,但它仍然让我传递的东西不是pdf(例如.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';

    }
}

2 个答案:

答案 0 :(得分:1)

您可以直接在实体中添加约束。您对此solution有何看法?

// 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;
}

答案 1 :(得分:0)

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