Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Microsoft Visual C# kullanarak bir dosyanın nasıl karşıya yüklendiği açıklanmaktadır.
Özgün ü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. Giriş denetimi, yerel bilgisayarınızdan görüntü yüklemek için 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 sunucuya karşı doğrulanır. Karşıya yüklenen dosya sunucuda varsa doğrulanır. Bu makalede, işlevselliği elde etmek için formun özniteliği kullanılır EncType
.
Gereksinimler
Bu makalede, aşağıdaki konulara aşina 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
Visual Studio .NET veya Visual Studio'yu başlatın.
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.
Proje Türleri'nin altında Visual C# Projeleri'ne tıklayın. Şablonlar'ın altında ASP.NET Web Uygulaması'nı tıklatı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.
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>
.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'in HTML 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
WebForm1'in HTML penceresinde, açılış ve kapanış
<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.
Kullanıcıdan bilgi almak için denetimin önüne bir metin dizesi ekleyebilirsiniz. WebForm1'in HTML 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
WebForm1'in HTML 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>
Bu Düğme denetimi, Giriş denetiminde belirttiğiniz dosyayı karşıya yüklemek için kullanılır.
Çıktıyı görüntülemek için tek bir etiket içeren bir Panel denetimi oluşturma
WebForm1'in HTML penceresinde, Düğme denetim kodundan sonra açılış ve kapanış <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, karşıya dosya yükleme işleminin başarılı olup olmadığını belirten 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 etkinliğinde 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 sonra dosyayı Web sitesine yükler. Bu kodu eklemek için şu adımları izleyin:
Düğme denetiminin olayı için bir olay işleyicisi oluşturmak için
Click
bu makalenin Düğme Denetimi Ekle bölümünde oluşturulan Karşıya Yükle düğmesine çift tıklayın.Kod penceresinin en üstüne aşağıdaki kodu ekleyin:
using System.IO;
Karşıya Yükle düğmesinin
Click
olay işleyicisine aşağıdaki kodu 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;
Dosya menüsünde Tümünü Kaydet’e tıklayın.
Karşıya yükleme eyleminin çalıştığını doğrulayın
Hata Ayıkla menüsünde Başlat'a tıklayarak uygulamayı derleyin ve çalıştırın. Metin kutusu ve komut düğmesi görüntülenir.
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.
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.Bu uygulamanın .NET Framework'te çalışmasını sağlamak için ASPNET kullanıcısına Tam Denetim erişimine izin verin. Bunun için aşağıdaki adımları izleyin:
Windows Gezgini'nde uygulama klasörünü bulun. Yol şeklindedir
C:\inetpub\wwwroot\ApplicationName
.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.
Güvenlik sekmesine tıklayın.
Ekle'yi tıklatı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.
Seçecek nesne adlarını girin kutusuna ASPNET yazın ve tamam'a tıklayın.
ApplicationName Özellikleri iletişim kutusunda, Grup veya kullanıcı adları listesinde ASPNET kullanıcısını tıklatın.
İ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
- Bilgisayarınızda bulunan Machine.config dosyasını çalışma zamanını yüklediğiniz yolun altındaki CONFIG klasöründe açın.
- 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ştirinuser
ve machine.config dosyasını kaydedin.<processModel>
- 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.
- Geçici ASP.NET Dosyaları Özellikleri iletişim kutusunda Güvenlik sekmesine tıklayın.
- Gelişmiş'i tıklatın.
- Geçici ASP.NET Dosyaları için Erişim Denetimi Ayarları iletişim kutusunda Ekle'ye tıklayın.
- İletişim kutusunda, Ad kutusuna kullanıcı adını yazın ve tamam'a tıklayın.
- 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.