Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come caricare un file usando Microsoft Visual C#.
Versione originale del prodotto: Visual C#, ASP.NET, Internet Information Services
Numero KB originale: 816150
Introduzione
Questo articolo dettagliato illustra come caricare un file di immagine esistente dall'unità disco rigido locale in un sito Web. Un controllo Input viene usato per caricare un'immagine dal computer locale. Questo file caricato viene convalidato sul server per assicurarsi di non sovrascrivere un file esistente già caricato. Il file caricato viene convalidato se esiste nel server. Questo articolo usa l'attributo EncType
del modulo per ottenere la funzionalità.
Requisiti
Questo articolo presuppone che l'utente abbia familiarità con gli argomenti seguenti:
- Applicazioni Web
- ASP.NET
L'elenco seguente illustra il software consigliato e l'infrastruttura di rete necessari:
- Visual C# .NET o Visual C#
- Internet Information Services (IIS)
Creare un modulo Web ASP.NET
Avviare Visual Studio .NET o Visual Studio.
Scegliere Nuovo dal menu Filee quindi fare clic su Progetto.
Note
In Visual Studio scegliere Nuovo dal menu File e quindi fare clic su Sito Web.
In Tipi di progetto fare clic su Progetti Visual C#. In Modelli fare clic su ASP.NET'applicazione Web.
Note
In Visual Studio selezionare Visual C# a destra del linguaggio. In Modelli fare clic su ASP.NET sito Web.
Nella casella Percorso digitare il percorso seguente e quindi fare clic su OK:
http://WebServerName/ApplicationName
Note
WebServerName è un segnaposto per il nome del server Web. ApplicationName è un segnaposto per il nome dell'applicazione.
Per impostazione predefinita, viene creato WebForm1.aspx .
Note
In Visual Studio selezionare HTTP a destra di Posizione e quindi digitare
<http://WebServerName>
.Scegliere Origine HTML dal menu Visualizza.
Note
In Visual Studio fare clic su Code dal menu Visualizza .
Modificare gli attributi del modulo
Nella finestra HTML di WebForm1 sostituire il tag modulo con quanto segue:
<form id="Form1" method="post" runat="server" EncType="multipart/form-data" action="WebForm1.aspx">
L'attributo EncType
specifica il formato dei dati inseriti. Il browser usa questo attributo per codificare le informazioni inviate al server. L'attributo action in questo codice specifica che la pagina elaborerà la richiesta. Per impostazione predefinita, l'attributo del metodo del modulo è impostato su post in modo da poter inviare grandi quantità di dati nella transazione.
Aggiungere il controllo Input per specificare il file da caricare nel server
Nella finestra HTML di WebForm1 aggiungere il codice seguente tra i tag di apertura e di chiusura
<form>
:<INPUT id="oFile" type="file" runat="server" NAME="oFile">
Questo controllo Input specifica il file da caricare nel server.
È possibile aggiungere una stringa di testo davanti al controllo per richiedere all'utente. Digitare il testo seguente davanti al controllo Input nella finestra HTML di WebForm1:
Selezionare il file di immagine da caricare nel server:
Aggiungere un controllo Pulsante
Nella finestra HTML di WebForm1 aggiungere il codice seguente tra i tag di apertura e chiusura
<form>
, dopo il codice di controllo Input:<asp:button id="btnUpload" type="submit" text="Upload" runat="server"></asp:button>
Questo controllo Button viene usato per caricare il file specificato nel controllo Input.
Creare un controllo Pannello contenente una singola etichetta per visualizzare l'output
Nella finestra HTML di WebForm1 aggiungere il codice seguente tra i tag di apertura e chiusura<form>
, dopo il codice del controllo Button:
<asp:Panel ID="frmConfirmation" Visible="False" Runat="server">
<asp:Label id="lblUploadResult" Runat="server"></asp:Label>
</asp:Panel>
Questo codice viene usato per visualizzare il messaggio per indicare se il caricamento del file ha esito positivo. Per visualizzare questo output, viene creato un controllo Pannello che contiene una singola etichetta.
Caricare il file nell'evento Button Click
Il codice in questa sezione recupera il file dal file system locale, verifica se il file esiste già nel server e quindi carica il file nel sito Web. Per aggiungere questo codice, seguire questa procedura:
Fare doppio clic sul pulsante Carica creato nella sezione Aggiungi un controllo Pulsante di questo articolo per creare un gestore eventi per l'evento
Click
del controllo pulsante.Aggiungere il codice seguente nella parte superiore della finestra Codice :
using System.IO;
Aggiungere il codice seguente al
Click
gestore eventi per il pulsante Carica :string strFileName; string strFilePath; string strFolder; strFolder = Server.MapPath("./"); // Retrieve the name of the file that is posted. strFileName = oFile.PostedFile.FileName; strFileName = Path.GetFileName(strFileName); if(oFile.Value != "") { // Create the folder if it does not exist. if(!Directory.Exists(strFolder)) { Directory.CreateDirectory(strFolder); } // Save the uploaded file to the server. strFilePath = strFolder + strFileName; if(File.Exists(strFilePath)) { lblUploadResult.Text = strFileName + " already exists on the server!"; } else { oFile.PostedFile.SaveAs(strFilePath); lblUploadResult.Text = strFileName + " has been successfully uploaded."; } } else { lblUploadResult.Text = "Click 'Browse' to select the file to upload."; } // Display the result of the upload. frmConfirmation.Visible = true;
Scegliere Save All (Salva tutti) dal menu File.
Verificare che l'azione di caricamento funzioni
Scegliere Avvia per compilare ed eseguire l'applicazione dal menu Debug. Viene visualizzata una casella di testo e un pulsante di comando.
Digitare il percorso del file di immagine nella casella di testo oppure fare clic su Sfoglia per individuare il file di immagine nel computer locale.
Fare clic su Carica per inviare il file al server. Se il file è univoco, viene visualizzato un messaggio che indica che il caricamento è riuscito. Se il file esiste già nel server, viene visualizzato un messaggio appropriato. I file caricati da questa applicazione vengono salvati nel percorso:
C:\inetpub\wwwroot\ApplicationName
nel disco rigido locale.Per rendere questa applicazione funzionante in .NET Framework, consentire l'accesso controllo completo all'utente ASPNET . A tale scopo, effettuare i passaggi seguenti:
Individuare la cartella dell'applicazione in Esplora risorse. Il percorso è
C:\inetpub\wwwroot\ApplicationName
.Fare clic con il pulsante destro del mouse sulla cartella ApplicationName e quindi scegliere Proprietà. Verrà visualizzata la finestra di dialogo Proprietà NomeApplezione.
Fare clic sulla scheda Sicurezza.
Fare clic su Aggiungi. Verrà visualizzata la finestra di dialogo Selezione utenti o gruppi.
Note
In Visual Studio viene visualizzata la finestra di dialogo Seleziona utenti, computer o gruppi .
Digitare ASPNET nella casella Immettere i nomi degli oggetti da selezionare e quindi fare clic su OK.
Nella finestra di dialogo Proprietà NomeApplezione fare clic sull'utente ASPNET nell'elenco Gruppi o nomi utente.
In Consenti fare clic per selezionare la casella di controllo Controllo completo e quindi fare clic su OK.
Elenco codice completo
WebForm1.aspx
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="Howto.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>WebForm1</title> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server" EncType="multipart/form-data" action="WebForm1.aspx"> Image file to upload to the server: <INPUT id="oFile" type="file" runat="server" NAME="oFile"> <asp:button id="btnUpload" type="submit" text="Upload" runat="server"></asp:button> <asp:Panel ID="frmConfirmation" Visible="False" Runat="server"> <asp:Label id="lblUploadResult" Runat="server"></asp:Label> </asp:Panel> </form> </body> </HTML>
WebForm1.aspx.cs
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO; namespace **ApplicationName** { /// <summary> /// Summary description for WebForm1. /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Button btnUpload; protected System.Web.UI.WebControls.Label lblUploadResult; protected System.Web.UI.WebControls.Panel frmConfirmation; protected System.Web.UI.HtmlControls.HtmlInputFile oFile; private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // CODEGEN: This call is required by the ASP.NET Web Form Designer. InitializeComponent(); base.OnInit(e); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.btnUpload.Click += new System.EventHandler(this.btnUpload_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void btnUpload_Click(object sender, System.EventArgs e) { string strFileName; string strFilePath; string strFolder; strFolder = Server.MapPath("./"); // Get the name of the file that is posted. strFileName = oFile.PostedFile.FileName; strFileName = Path.GetFileName(strFileName); if(oFile.Value != "") { // Create the directory if it does not exist. if(!Directory.Exists(strFolder)) { Directory.CreateDirectory(strFolder); } // Save the uploaded file to the server. strFilePath = strFolder + strFileName; if(File.Exists(strFilePath)) { lblUploadResult.Text = strFileName + " already exists on the server!"; } else { oFile.PostedFile.SaveAs(strFilePath); lblUploadResult.Text = strFileName + " has been successfully uploaded."; } } else { lblUploadResult.Text = "Click 'Browse' to select the file to upload."; } // Display the result of the upload. frmConfirmation.Visible = true; } }
Note
Il codice generato in Visual Studio è diverso dal codice generato in Visual Studio .NET.
Risoluzione dei problemi
- Aprire il file Machine.config che si trova nel computer nella cartella CONFIG nel percorso in cui è stato installato il runtime.
- Trovare la
<processModel>
sezione nel file Machine.config , modificare gliuser
password
attributi e impostando il nome e la password dell'utente che si vuole eseguire W3wp.exe o Aspnet_wp.exe in e quindi salvare il file Machine.config . - Individuare la cartella Temporary ASP.NET Files che si trova nella cartella CONFIG . Fare clic con il pulsante destro del mouse sulla cartella File ASP.NET temporanei e quindi scegliere Proprietà.
- Nella finestra di dialogo Proprietà file ASP.NET temporanei scegliere la scheda Sicurezza .
- Fare clic su Avanzate.
- Nella finestra di dialogo Impostazioni Controllo di accesso per File ASP.NET temporanei fare clic su Aggiungi.
- Nella finestra di dialogo digitare il nome utente nella casella Nome e quindi fare clic su OK.
- Nella finestra di dialogo Voce di autorizzazione per file ASP.NET temporanei assegnare all'utente le autorizzazioni complete e quindi fare clic su OK per chiudere la finestra di dialogo Proprietà file ASP.NET temporanei.