Ruby on rails Rails文件上载大小限制

Ruby on rails Rails文件上载大小限制,ruby-on-rails,passenger,mod-rails,Ruby On Rails,Passenger,Mod Rails,有没有人知道在运行带有乘客/mod_Rails的Rails应用程序时限制文件上传大小的好方法。请求应该立即被拒绝,这样文件就不会被传输到服务器 到目前为止,我找到的解决方案都描述了如何修补Mongrel以实现限制,但我必须在该应用程序中使用passenger。您可以使用LimitRequestBody指令通过Apache限制上传大小: <Directory "/var/www"> LimitRequestBody 1024 </Directory> Limit

有没有人知道在运行带有乘客/mod_Rails的Rails应用程序时限制文件上传大小的好方法。请求应该立即被拒绝,这样文件就不会被传输到服务器


到目前为止,我找到的解决方案都描述了如何修补Mongrel以实现限制,但我必须在该应用程序中使用passenger。

您可以使用LimitRequestBody指令通过Apache限制上传大小:

<Directory "/var/www">
    LimitRequestBody 1024
</Directory>

LimitRequestBody 1024

或者,如果您对乘客使用nginx,请在服务器块中添加:

server {
  client_max_body_size 100M;
}

您可以使用以下javascript通知用户所选文件超出最大限制。但仍然需要进行服务器端验证

$('#id_of_input_file_field').change(function() {
  if(this.files[0].size > MAX_LIMIT_FOR_FILE){
    $('#id_of_input_file_field').val(''); 
    alert('File exceeds maximum size limit ')
}
});

_文件的MAX_LIMIT_以字节为单位,因此,如果要将MAX LIMIT设置为1Mb,则_文件的MAX_LIMIT_值应为1048576

这是一种可能的解决方案。这里的问题是apache只是退出连接,因此不可能显示错误页面。是的,这是服务器端验证,用于安全目的。您可能应该在客户端使用一个脚本,这样非恶意用户就会得到即时通知。如果您使用的是像
dropzone
这样的插件,只需设置
maxFilesize