Web sitesine dosya yüklemek için Visual C# kullanma

Bu makalede, Microsoft Visual C# kullanarak bir dosyanın nasıl karşıya yüklendiği açıklanır.

Orijinal ürün sürümü: Visual C#, ASP.NET, Internet Information Services
Özgün KB numarası: 816150

Giriş

Bu adım adım makalede, yerel sabit disk sürücünüzden bir Web sitesine var olan bir görüntü dosyasının nasıl yüklendiği açıklanır. Yerel bilgisayarınızdan görüntü yüklemek için Giriş denetimi kullanılır. Karşıya yüklenen bu dosya, zaten karşıya yüklenmiş olan mevcut bir dosyanın üzerine yazmadığınızdan emin olmak için sunucuda doğrulanır. Karşıya yüklenen dosya sunucuda mevcutsa doğrulanır. Bu makalede EncType , işlevselliği elde etmek için formun özniteliği kullanılır.

Gereksinimler

Bu makalede, aşağıdaki konular hakkında bilgi sahibi olduğunuz varsayılır:

  • Web uygulamaları
  • ASP.NET

Aşağıdaki listede ihtiyacınız olan önerilen yazılım ve ağ altyapısı özetlenmiştir:

  • Visual C# .NET veya Visual C#
  • Internet Information Services (IIS)

ASP.NET Web formu oluşturma

  1. Visual Studio .NET veya Visual Studio'yu başlatın.

  2. Dosya menüsünde, Yeni'nin üzerine gelin ve Proje'ye tıklayın.

    Not

    Visual Studio'da, Dosya menüsünde Yeni'nin üzerine gelin ve Web Sitesi'ne tıklayın.

  3. Proje Türleri'nin altında Visual C# Projeleri'ne tıklayın. Şablonlar'ın altında Web Uygulaması ASP.NET'e tıklayın.

    Not

    Visual Studio'da Dil'in sağ tarafındaki Visual C# öğesini seçin. Şablonlar'ın altında ASP.NET Web Sitesi'ne tıklayın.

  4. Konum kutusuna aşağıdaki konumu yazın ve Tamam'a tıklayın:
    http://WebServerName/ApplicationName

    Not

    WebServerName , Web sunucunuzun adı için bir yer tutucudur. ApplicationName , uygulamanızın adı için bir yer tutucudur.

    Varsayılan olarak , WebForm1.aspx oluşturulur.

    Not

    Visual Studio'da Konum'un sağ tarafındaki HTTP'yi seçin ve yazın<http://WebServerName>.

  5. Görünüm menüsünde HTML kaynağı'na tıklayın.

    Not

    Visual Studio'da Görünüm menüsünde Kod'a tıklayın.

Form özniteliklerini değiştirme

WebForm1'inHTML penceresinde form etiketini aşağıdakilerle değiştirin:

<form id="Form1" method="post" runat="server" EncType="multipart/form-data" action="WebForm1.aspx">

özniteliği, EncType gönderilen verilerin biçimini belirtir. Tarayıcı, sunucuya gönderilen bilgileri kodlamak için bu özniteliği kullanır. Bu koddaki eylem özniteliği, sayfanın isteği işleyeceğini belirtir. Varsayılan olarak, harekette büyük miktarda veri gönderebilmeniz için formun yöntem özniteliği post olarak ayarlanır.

Sunucuya yüklemek istediğiniz dosyayı belirtmek için Giriş denetimini ekleyin

  1. WebForm1'inHTML penceresinde, açma ve kapatma <form> etiketleri arasına aşağıdaki kodu ekleyin:

    <INPUT id="oFile" type="file" runat="server" NAME="oFile">
    

    Bu Giriş denetimi, sunucuya yüklemek istediğiniz dosyayı belirtir.

  2. Denetimin önüne bir metin dizesi ekleyerek kullanıcıya sorabilirsiniz. WebForm1'inHTML penceresinde Giriş denetiminin önüne aşağıdaki metni yazın:

    Sunucuya yüklenecek görüntü dosyasını seçin:

Düğme denetimi ekleme

  1. WebForm1'inHTML penceresinde, Giriş denetim kodundan sonra açma ve kapatma <form> etiketleri arasına aşağıdaki kodu ekleyin:

    <asp:button id="btnUpload" type="submit" text="Upload" runat="server"></asp:button>
    
  2. Bu Düğme denetimi, Giriş denetiminde belirttiğiniz dosyayı karşıya yüklemek için kullanılır.

Çıkışı görüntülemek için tek etiket içeren bir Panel denetimi oluşturma

WebForm1'inHTML penceresinde, Düğme denetim kodundan sonra açma ve kapatma <form> etiketleri arasına aşağıdaki kodu ekleyin:

<asp:Panel ID="frmConfirmation" Visible="False" Runat="server">
    <asp:Label id="lblUploadResult" Runat="server"></asp:Label>
</asp:Panel>

Bu kod, dosya yükleme işleminin başarılı olup olmadığını belirtmek için iletiyi görüntülemek için kullanılır. Bu çıkışı görüntülemek için tek bir etiket içeren bir Panel denetimi oluşturulur.

Düğme Tıklama olayında dosyayı karşıya yükleme

Bu bölümdeki kod dosyayı yerel dosya sisteminden alır, dosyanın sunucuda zaten var olup olmadığını denetler ve dosyayı Web sitesine yükler. Bu kodu eklemek için şu adımları izleyin:

  1. Bu makalenin Düğme denetimi ekle bölümünde oluşturulan Karşıya Yükle düğmesine çift tıklayarak düğme denetiminin olayı için Click bir olay işleyicisi oluşturun.

  2. Kod penceresinin en üstüne aşağıdaki kodu ekleyin:

    using System.IO;
    
  3. Karşıya Yükle düğmesi için olay işleyicisine aşağıdaki kodu Click ekleyin:

    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;
    
  4. Dosya menüsünde Tümünü Kaydet'e tıklayın.

Karşıya yükleme eyleminin çalıştığını doğrulayın

  1. Uygulamayı derlemek ve çalıştırmak için Hata Ayıkla menüsünde Başlat'a tıklayın. Bir metin kutusu ve bir komut düğmesi görüntülenir.

  2. Resim dosyasının yolunu metin kutusuna yazın veya yerel bilgisayarınızda görüntü dosyasını bulmak için Gözat'a tıklayın.

  3. Dosyayı sunucuya göndermek için Karşıya Yükle'ye tıklayın. Dosya benzersizse karşıya yüklemenin başarılı olduğunu belirten bir ileti alırsınız. Dosya sunucuda zaten varsa, uygun bir ileti alırsınız. Bu uygulamadan karşıya yüklediğiniz dosyalar, yerel sabit diskteki konuma C:\inetpub\wwwroot\ApplicationName kaydedilir.

  4. Bu uygulamanın .NET Framework çalışmasını sağlamak için ASPNET kullanıcısına Tam Denetim erişimine izin verin. Bunu yapmak için şu adımları uygulayın:

    1. Windows Gezgini'nde uygulama klasörünü bulun. Yol şeklindedir C:\inetpub\wwwroot\ApplicationName.

    2. ApplicationName klasörüne sağ tıklayın ve ardından Özellikler'e tıklayın. ApplicationName Özellikleri iletişim kutusu görüntülenir.

    3. Güvenlik sekmesine tıklayın.

    4. Ekle'ye tıklayın. Kullanıcıları veya Grupları Seç iletişim kutusu görüntülenir.

      Not

      Visual Studio'da Kullanıcıları, Bilgisayarları veya Grupları Seç iletişim kutusu görüntülenir.

    5. Seçecek nesne adlarını girin kutusuna ASPNET yazın ve ardından Tamam'a tıklayın.

    6. ApplicationName Özellikleri iletişim kutusunda, Grup veya kullanıcı adları listesinde ASPNET kullanıcısını tıklatın.

    7. İzin Ver'in altında, Tam Denetim onay kutusunu seçmek için tıklayın ve ardından Tamam'a tıklayın.

Tam kod listesi

  • 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;
        }
    }
    

Not

Visual Studio'da oluşturulan kod, Visual Studio .NET'te oluşturulan koddan farklıdır.

Sorun giderme

  1. Bilgisayarınızda bulunan Machine.config dosyasını çalışma zamanını yüklediğiniz yolun altındaki CONFIG klasöründe açın.
  2. <processModel>Machine.config dosyasındaki bölümü bulun, ve password özniteliklerini W3wp.exe veya Aspnet_wp.exe altında çalışmasını istediğiniz kullanıcının adı ve parolasıyla değiştirin user ve Machine.config dosyasını kaydedin.
  3. CONFIG klasöründe bulunan Temporary ASP.NET Files klasörünü bulun. Geçici ASP.NET Dosyaları klasörüne sağ tıklayın ve ardından Özellikler'e tıklayın.
  4. Geçici ASP.NET Dosyaları Özellikleri iletişim kutusunda Güvenlik sekmesine tıklayın.
  5. Gelişmiş'e tıklayın.
  6. Geçici ASP.NET Dosyaları için Access Control Ayarları iletişim kutusunda Ekle'ye tıklayın.
  7. İletişim kutusunda, Ad kutusuna kullanıcı adını yazın ve tamam'a tıklayın.
  8. Geçici ASP.NET Dosyaları için İzin Girdisi iletişim kutusunda, kullanıcıya tam izinleri verin ve ardından Tamam'a tıklayarak Geçici ASP.NET Dosyaları Özellikleri iletişim kutusunu kapatın.

Başvurular