Il modo migliore per assicurarsi che l'utente non carichi immagini di dimensioni superiori a 1 MB
-
03-07-2019 - |
Domanda
Sto usando ASP.net con VB.NET. Esiste un validatore che posso usare per controllare le dimensioni dell'immagine caricata? Altrimenti cosa devo fare nel codice per assicurarmi che l'utente non carichi immagini più di 1 MB?
Anche il codice C # p.s farà, posso usare un convertitore per VB.NET
Modifica
Per qualche motivo quando cambio maxRequestLength a 1024 (nel mio WEB.config) e carico un'immagine con dimensione 1,25 mb, visualizzo la pagina di errore Microsoft che dice "Internet Explorer non può visualizzare la pagina web". E ho un blocco Try Catch all'interno del mio pulsante Invia. Se rimuovo maxRequestLength dal mio Web.config, allora funziona perfettamente.
Soluzione
Questo è in definitiva gestito in Web.config. Cerca la sezione httpRuntime:
<httpRuntime
executionTimeout="110"
maxRequestLength="4096"
/>
Esistono molte altre impostazioni in httpRuntime ma queste sono le due rilevanti. Qui, maxRequestLength è impostato su 4096 o 4KB (il numero è in byte). Quindi, imposta questo valore di conseguenza. Inoltre, vorrai impostare l'esecuzioneTimeout di conseguenza, in modo da concedere un ragionevole lasso di tempo per caricare qualunque sia il tuo massimo caricamento.
Altri suggerimenti
Puoi usare il seguente codice per determinare la dimensione [in KB] del file caricato e una volta che conosci la dimensione puoi decidere facilmente se vuoi procedere ulteriormente con il file o rifiutare il caricamento.
Request.Files(0).ContentLength / 1024
L'errore Impossibile visualizzare la pagina Web si verifica perché ASP.NET interrompe la connessione per richieste di grandi dimensioni per mitigare gli attacchi DOS basati su richieste di grandi dimensioni. Per ovviare a questo, dovresti fare il caricamento in un iframe e quindi rilevare se si è verificato un errore o meno. Puoi anche utilizzare un componente uploader flash, silverlight, java o activex installato sul client per convalidare la dimensione del file lato client, ma ciò richiederà l'installazione a seconda della tua soluzione.