2015-07-19 58 views
2

我正在验证我的一个表单,我需要检查上传的文件是否为pdf。我尝试在表单中使用File约束,但它仍然让我传递不是pdf(例如.txt)的东西。如何检查上传的文件是否是Symfony 2中的pdf

我这样做是错误的还是应该使用其他方法来做到这一点?

我的形式:

<?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'; 

    } 
} 

回答

0

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

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; 
} 
+0

它看起来真的很有意思,但我没有生物文件的实体,我只是上传它,所以它需要在表单验证中完成。 –

+0

尝试了一些东西后,似乎我以前的情况确实起作用。只是如果我有,例如.pdf文件,并选择将扩展名更改为.txt,它仍将它识别为.pdf,但它仍然会改变我的控制器中的扩展名,所以它是o.k.另一方面,如果我为.pdf更改了一个.txt,它仍然会将该文件识别为.txt,这是很好的,因为该文件无论如何都会读取。但我仍然有一个问题,什么是x-pdf格式? –

相关问题