我想添加文件大小約束到我的表單,以禁止用戶上傳大於2M的文件(如在我的php.ini中設置),並且我嘗試了以下操作: 在formBuilder中:Symfony2文件大小約束形式
->add('avatar', 'file', array(
'label' => 'Insert foto',
'required' => false,
'constraints'=> array(
new File(array('maxSize'=>'2048k',
'maxSizeMessage'=>'More than 2MB!!'))),
'label_attr' => array(
'class' => 'control-label'
),
'attr' => array(
'class' => 'form-control filestyle',
'placeholder' => 'Foto'... etc,
此外,我添加的文件屬性設置爲我的主要實體類
/**
* @Assert\File(
* maxSize = "2048k",
* mimeTypes = {"image/png"},
* mimeTypesMessage = "Please upload a valid PNG file",
* maxSizeMessage = "Upload not more than 2M size files"
*)
*/
protected $avatar;
在我的控制,我得到的文件與此:
$file = $form['avatar']->getData();
但仍然所有的操作都是在文件實際上傳到我的服務器後完成的。我不想上傳它,如果它大於2MB,而是我想顯示一條錯誤消息。也許我應該使用Formevents,但沒有找到工作示例。任何想法都會有所幫助。謝謝。
使用Javascript或類似方法可以工作,但不是防彈解決方案,因爲可以輕鬆禁用或更改javascript。更好地驗證服務器端,如果你仍然想在JavaScript檢查了這一點http://stackoverflow.com/questions/8212041/it-is-possible-to-validate-the-size-and-type-of-input- file-in-html5 –