Passenger / mod_railsでRailsアプリケーションを実行するときに、ファイルのアップロードサイズを制限するための良い解決策を知っている人はいますか。ファイルがサーバーに転送されないように、リクエストはすぐに拒否する必要があります。
私がこれまでに見つけた解決策はすべて、制限を実装するためにMongrelにパッチを適用する方法を説明していますが、このアプリケーションでは乗客を使用する必要があります。
Passenger / mod_railsでRailsアプリケーションを実行するときに、ファイルのアップロードサイズを制限するための良い解決策を知っている人はいますか。ファイルがサーバーに転送されないように、リクエストはすぐに拒否する必要があります。
私がこれまでに見つけた解決策はすべて、制限を実装するためにMongrelにパッチを適用する方法を説明していますが、このアプリケーションでは乗客を使用する必要があります。
または、パッセンジャーで nginx を使用している場合は、サーバー ブロックに追加します。
server {
client_max_body_size 100M;
}
http://wiki.nginx.org/NginxHttpCoreModule#client_max_body_size
LimitRequestBody ディレクティブを使用して、Apache 経由でアップロード サイズを制限できます。
<Directory "/var/www">
LimitRequestBody 1024
</Directory>
http://httpd.apache.org/docs/1.3/mod/core.html#limitrequestbody
次の 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_FOR_FILE はバイト単位であるため、最大制限を 1Mb に設定する場合、MAX_LIMIT_FOR_FILE の値は 1048576 にする必要があります