1

我的 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 字文件时,我收到了验证消息:

 The file is too large. Allowed maximum size is 20M bytes.

你遇到过吗?还是我的代码错了。

我从 Symfony 文档中举了一个例子:

Symfony 文件 - 验证约束参考

4

3 回答 3

10

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

这是 Symfony 的一个已知错误,实际上当文件大小对于您的 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(但我不确定)^^

于 2013-06-14T13:44:07.667 回答
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');
        }
    });
}
于 2014-09-08T23:05:55.633 回答
0

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

于 2016-05-21T17:10:17.933 回答