Usare Visual C# per caricare un file in un sito Web
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 nel 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 si abbia familiarità con gli argomenti seguenti:
- Applicazioni Web
- ASP.NET
L'elenco seguente descrive il software e l'infrastruttura di rete consigliati 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 File, quindi fare clic su Progetto.
Nota
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.
Nota
In Visual Studio selezionare Visual C# a destra di Language. 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
Nota
WebServerName è un segnaposto per il nome del server Web. ApplicationName è un segnaposto per il nome dell'applicazione.
Per impostazione predefinita, viene creato WebForm1.aspx.
Nota
In Visual Studio selezionare HTTP a destra di Location ( Posizione) e quindi digitare
<http://WebServerName>
.Scegliere Origine HTML dal menu Visualizza.
Nota
In Visual Studio fare clic su Codice dal menu Visualizza .
Modificare gli attributi del modulo
Nella finestra HTML di WebForm1 sostituire il tag del modulo con il codice seguente:
<form id="Form1" method="post" runat="server" EncType="multipart/form-data" action="WebForm1.aspx">
L'attributo EncType
specifica il formato dei dati pubblicati. Il browser usa questo attributo per codificare le informazioni inviate al server. L'attributo action in questo codice specifica che la pagina elabora la richiesta. Per impostazione predefinita, l'attributo method 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 che si desidera 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 Button
Nella finestra HTML di WebForm1 aggiungere il codice seguente tra i tag di apertura e chiusura
<form>
, dopo il codice del 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 Panel che contiene 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 Panel 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 Salva tutto dal menu File.
Verificare che l'azione di caricamento funzioni
Scegliere Avvia dal menu Debug per compilare ed eseguire l'applicazione. Vengono visualizzati 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 informa 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 l'applicazione funzionante in .NET Framework, consentire l'accesso con controllo completo all'utente ASPNET . A tal fine, attenersi alla seguente procedura:
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à ApplicationName .
Fare clic sulla scheda Sicurezza.
Fare clic su Aggiungi. Viene visualizzata la finestra di dialogo Seleziona utenti o gruppi.
Nota
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à ApplicationName fare clic sull'utente ASPNET nell'elenco Nomi di gruppo o utente .
In Consenti fare clic per selezionare la casella di controllo Controllo completo e quindi fare clic su OK.
Elenco di 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; } }
Nota
Il codice generato in Visual Studio è diverso dal codice generato in Visual Studio .NET.
Risoluzione dei problemi
- Aprire il fileMachine.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
attributi epassword
con il nome e la password dell'utente in cui si vuole eseguire W3wp.exe o Aspnet_wp.exe e quindi salvare il file Machine.config . - Individuare la cartella File ASP.NET temporanei 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 fare clic sulla 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 .
Riferimenti
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per