Symfony2 - maxSize参数无法处理文件上传

时间:2013-06-14 13:29:21

标签: php validation symfony file-upload

我的Symfony2项目有一个文件上传功能。

我正在设置maxSize参数:

$manuscript_file = new File(array(
        'maxSize' => '20M',
        'mimeTypes' => array(
            'application/msword',
            'application/zip',
        ),
        'mimeTypesMessage' => 'Please upload a valid manuscript file. Valid types are: doc, docx, zip',
    ));

问题在于,当我尝试上传2M或3M word文件时,我收到验证消息:

 The file is too large. Allowed maximum size is 20M bytes.
你是否面对过那个?或者我的代码错了。

我从Symfony文档中获取了示例:

Symfony File - Validation Constraints Reference

3 个答案:

答案 0 :(得分:10)

我已经面临这个问题了,所以我发布了这个解决方案(我认为这对你来说也是同样的问题)。

这是Symfony的known bug,实际上,当文件大小对于PHP配置而言过高时,框架也会显示验证器错误消息,而不是获得经典的PHP错误。

在您当前的PHP配置中,您可能将最大上传大小限制为2M,因此Symfony显示错误的错误。

请检查 php.ini 文件(Linux上的/etc/php5/apache2/php.ini)并增加max_upload_size以适合您的字段:

upload_max_filesize = 20M

不要忘记重启apache:apache2ctl restart

现在应该可以了!

请注意,可能修复了最后一个Symfony版本,另一个解决方案可能是将您的项目升级到sf2.3(但我不确定)^^

答案 1 :(得分:0)

我创建了一个jQuery验证方法,以防止将大文件发送到服务器,因为php不支持它(它是西班牙语):

$(function() {
    //Validate 20MB
    validarFileSize('#carga_telefonos_form_file', {{ 10*1024*1024 }}, '#div-mensaje-file-size', '#botonSubmit');
});

function validarFileSize(campo, maximo, divMensaje, btnGuardar) {
    console.debug("validarFileSize. Campo: " + campo + ", maximo: " + maximo);
    $(campo).bind('change', function() {
        var size = this.files[0].size;
        if (size > maximo) {
            $(divMensaje).show();
            $(btnGuardar).attr('disabled', 'disabled');
        } else {
            $(divMensaje).hide();
            $(btnGuardar).removeAttr('disabled');
        }
    });
}

答案 2 :(得分:0)

如果您使用POST上传文件,请注意php.ini中的 post_max_size 限制