Condividi tramite


Cenni preliminari sul controllo server Web FileUpload

Aggiornamento: novembre 2007

Il controllo FileUpload consente di fornire agli utenti un modo per inviare un file dal proprio computer al server.

Vengono illustrati i seguenti argomenti:

  • Funzionalità

  • Background

  • Esempi di codice

  • Riferimento alle classi

Funzionalità

Il controllo FileUpload può essere utilizzato per:

  • Consentire agli utenti di caricare file archiviati in un determinato percorso sul server.

  • Limitare la dimensione del file che può essere caricato.

  • Esaminare le proprietà di un file caricato prima di archiviare il file.

Torna all'inizio

Background

Il controllo FileUpload consente agli utenti di caricare immagini, file di testo o altri file. Il controllo FileUpload visualizza una casella di testo, nella quale gli utenti possono digitare il nome di un file da caricare sul server, e un pulsante Sfoglia, che consente di accedere a una finestra di dialogo per la selezione dei file. La finestra di dialogo visualizzata dipende dal sistema operativo del computer dell'utente. Per motivi di sicurezza, non è possibile precaricare il nome di un file nel controllo FileUpload.

Gestione del caricamento di file

Una volta selezionato un file da caricare e inviata la pagina da parte dell'utente, il file viene caricato come parte della richiesta. e memorizzato interamente nella cache del server. Al termine del caricamento, il codice della pagina viene eseguito.

È possibile accedere al file caricato nei seguenti modi:

Quando viene eseguito il codice, è possibile esaminare le caratteristiche del file, quali il nome, la dimensione e il tipo MIME, e quindi salvare il file. È possibile gestire il file come matrice di byte o come flusso. In alternativa, sia il controllo FileUpload che l'oggetto HttpPostedFile supportano il metodo SaveAs per la scrittura del file su disco.

I file caricati possono essere salvati in qualsiasi percorso. Tuttavia, per eseguire il salvataggio, il processo ASP.NET deve disporre dell'autorizzazione per la creazione di file nel percorso specificato. Inoltre, come misura di sicurezza, l'applicazione deve essere configurata in modo da richiedere un percorso assoluto (non un percorso relativo) per il salvataggio del file. Se l'attributo requireRootedSaveAsPath dell'elemento di configurazione httpRuntime è impostato su true (impostazione predefinita), al momento del salvataggio del file caricato è necessario fornire un percorso assoluto.

Nota:

È possibile creare un percorso assoluto basato sulla radice dell'applicazione utilizzando il metodo MapPath della classe HttpServerUtility e passando al metodo l'operatore tilde (~), che rappresenta la cartella principale dell'applicazione. Per ulteriori informazioni, vedere Percorsi del sito Web ASP.NET.

La dimensione massima del file che può essere caricato dipende dal valore dell'impostazione di configurazione MaxRequestLength. Se gli utenti tentano di caricare un file di dimensione superiore a quella massima consentita, l'operazione non verrà eseguita.

Utilizzo del controllo FileUpload negli aggiornamenti a pagina parziale

Il controllo FileUpload è progettato per essere utilizzato unicamente in scenari di postback, non in scenari di postback asincroni, durante il rendering a pagina parziale. Quando si utilizza un controllo FileUpload all'interno di un controllo UpdatePanel, il file deve essere caricato utilizzando un controllo che rappresenta un oggetto PostBackTrigger per il riquadro. I controlli UpdatePanel vengono utilizzati per aggiornare le aree selezionate di una pagina anziché l'intera pagina con un postback. Per ulteriori informazioni, vedere Cenni preliminari sui controlli UpdatePanel e Cenni preliminari sul rendering a pagina parziale.

Protezione e controllo FileUpload

Utilizzando il controllo FileUpload, gli utenti possono caricare file potenzialmente dannosi, inclusi file script e file eseguibili. Non è possibile definire in anticipo delle limitazioni relative ai tipi di file che un utente può caricare. Per limitare i tipi di file caricabili da un utente, è necessario esaminare le caratteristiche del file dopo averlo caricato, ad esempio l'estensione del nome del file e il valore della proprietà ContentType del file.

Nota:

Prima dell'invio della pagina, è possibile utilizzare uno script client per esaminare il nome file che un utente ha digitato nella casella di testo. Tuttavia il controllo del nome del file sul lato client, anche se utile, non impedisce agli utenti di caricare tipi di file non sicuri, ad esempio file eseguibili.

Esempi di codice

Procedura: caricare file con il controllo server Web FileUpload

Torna all'inizio

Riferimento alle classi

Nella tabella riportata di seguito sono elencate le classi correlate al controllo FileUpload.

Membro

Descrizione

FileUpload

Classe principale del controllo FileUpload.

Torna all'inizio

Vedere anche

Riferimenti

HtmlInputFile