我正在尝试向我的表单添加filesize约束,以禁止用户上传大于2M的文件(在我的php.ini中设置)并尝试以下操作: 在formBuilder中:
->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但没有找到工作实例。任何想法都会有所帮助。谢谢。
答案 0 :(得分:3)
如果您想在上传文件之前检查文件大小,那么您需要JavaScript approach。
PHP(和Symfony)是服务器端,只能在上传文件后处理它们。 JavaScript是客户端,可以在上传文件之前检查文件。
我会忍受它上传并立即检查它;它是最可靠的方法。