我的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文档中获取了示例:
答案 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 限制