我正在处理我的某个表单的验证,我需要检查上传的文件是否为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';
}
}
答案 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,这很好,因为无论如何文件都会读取。