2010-02-04 19 views
8

Qualcuno conosce una buona soluzione per limitare le dimensioni del caricamento del file quando si esegue un'applicazione Rails con Passenger/mod_rails. La richiesta dovrebbe essere immediatamente rifiutata, in modo che il file non venga trasferito al server.Limite dimensione caricamento file Rails

Le soluzioni che ho trovato finora descrivono come applicare Mongrel per implementare una limitazione, ma devo usare il passeggero con questa applicazione.

risposta

9

Si può tappare la dimensione di caricamento tramite Apache utilizzando la direttiva LimitRequestBody:

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

http://httpd.apache.org/docs/1.3/mod/core.html#limitrequestbody

+0

questa è una possibile soluzione. il problema qui è che apache lascia la connessione e per questo non è possibile mostrare una pagina di errore – Mato

+0

Sì, questa è la convalida lato server e viene utilizzata per motivi di sicurezza. Probabilmente dovresti usare uno script sul lato client in modo che gli utenti non malintenzionati vengano informati immediatamente. Se stai usando un plugin come 'dropzone' è facile come impostare' maxFilesize' – zehelvion

8

È possibile utilizzare il seguente javascript per informare l'utente che il file selezionato supera il limite massimo. Ma è essenziale avere una convalida sul lato server.

$('#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 è in byte, quindi se si desidera impostare il limite massimo di 1Mb allora il valore di MAX_LIMIT_FOR_FILE dovrebbe essere 1048576

Problemi correlati