ASP.NET Web Sayfaları (Razor) Sitesinde Dosyalarla Çalışma
yazan: Tom FitzMacken
Bu makalede, ASP.NET Web Sayfaları (Razor) sitesinde dosyaları okuma, yazma, ekleme, silme ve karşıya yükleme açıklanmaktadır.
Not
Görüntüleri karşıya yüklemek ve işlemek (örneğin, çevirme veya yeniden boyutlandırma) istiyorsanız bkz. ASP.NET Web Sayfaları Sitesinde Resimlerle Çalışma.
Öğrenecekleriniz:
- Metin dosyası oluşturma ve dosyaya veri yazma.
- Mevcut bir dosyaya veri ekleme.
- Bir dosyayı okuma ve dosyadan görüntüleme.
- Web sitesinden dosya silme.
- Kullanıcıların bir veya birden çok dosyayı karşıya yüklemesine izin verme.
Makalede sunulan ASP.NET programlama özellikleri şunlardır:
File
Dosyaları yönetmek için bir yol sağlayan nesnesi.- Yardımcı
FileUpload
.- Yolu
Path
ve dosya adlarını işlemenize olanak tanıyan yöntemler sağlayan nesnesi.Öğreticide kullanılan yazılım sürümleri
- ASP.NET Web Sayfaları (Razor) 2
- WebMatrix 2
Bu öğretici, WebMatrix 3 ile de çalışır.
Metin Dosyası Oluşturma ve Dosyaya Veri Yazma
Web sitenizde veritabanı kullanmanın yanı sıra dosyalarla da çalışabilirsiniz. Örneğin, metin dosyalarını sitenin verilerini depolamak için basit bir yol olarak kullanabilirsiniz. (Verileri depolamak için kullanılan metin dosyasına bazen düz dosya adı verilir.) Metin dosyaları .txt,.xmlveya .csv (virgülle ayrılmış değerler) gibi farklı biçimlerde olabilir.
Verileri bir metin dosyasında depolamak istiyorsanız, oluşturulacak dosyayı ve yazılacak verileri belirtmek için yöntemini kullanabilirsiniz File.WriteAllText
. Bu yordamda, üç input
öğe (ad, soyadı ve e-posta adresi) ve gönder düğmesi içeren basit bir form içeren bir sayfa oluşturacaksınız. Kullanıcı formu gönderdiğinde, kullanıcının girişini bir metin dosyasında depolayacaksınız.
Henüz yoksa App_Data adlı yeni bir klasör oluşturun.
Web sitenizin kökünde UserData.cshtml adlı yeni bir dosya oluşturun.
Mevcut içeriği aşağıdakilerle değiştirin:
@{ var result = ""; if (IsPost) { var firstName = Request["FirstName"]; var lastName = Request["LastName"]; var email = Request["Email"]; var userData = firstName + "," + lastName + "," + email + Environment.NewLine; var dataFile = Server.MapPath("~/App_Data/data.txt"); File.WriteAllText(@dataFile, userData); result = "Information saved."; } } <!DOCTYPE html> <html> <head> <title>Write Data to a File</title> </head> <body> <form id="form1" method="post"> <div> <table> <tr> <td>First Name:</td> <td><input id="FirstName" name="FirstName" type="text" /></td> </tr> <tr> <td>Last Name:</td> <td><input id="LastName" name="LastName" type="text" /></td> </tr> <tr> <td>Email:</td> <td><input id="Email" name="Email" type="text" /></td> </tr> <tr> <td></td> <td><input type="submit" value="Submit"/></td> </tr> </table> </div> <div> @if(result != ""){ <p>Result: @result</p> } </div> </form> </body> </html>
HTML işaretlemesi, formu üç metin kutusuyla oluşturur. Kodda, işlemeye başlamadan önce sayfanın gönderilip gönderilmediğini belirlemek için özelliğini kullanırsınız
IsPost
.İlk görev, kullanıcı girişini almak ve bunu değişkenlere atamaktır. Kod daha sonra ayrı değişkenlerin değerlerini virgülle ayrılmış bir dizede birleştirir ve daha sonra farklı bir değişkende depolanır. Virgül ayırıcısının tırnak işaretleri (",") içinde yer alan bir dize olduğuna dikkat edin, çünkü oluşturduğunuz büyük dizeye tam olarak virgül eklersiniz. Birlikte birleştirdiğiniz verilerin sonuna öğesini eklersiniz
Environment.NewLine
. Bu bir satır sonu (yeni satır karakteri) ekler. Tüm bu birleştirme ile oluşturduğunuz şey aşağıdakine benzer bir dizedir:David,Jones,davidj@contoso.com
(Sonunda görünmez bir satır sonu ile.)
Ardından, verileri depoladığınız dosyanın konumunu ve adını içeren bir değişken (
dataFile
) oluşturursunuz. Konumu ayarlamak için özel bir işleme gerekir. Web sitelerinde, kodu web sunucusundaki dosyalar için C:\Folder\File.txt gibi mutlak yollara başvurmak kötü bir uygulamadır. Bir web sitesi taşınırsa mutlak yol yanlış olur. Ayrıca, barındırılan bir site için (kendi bilgisayarınızda değil) genellikle kodu yazarken doğru yolun ne olduğunu bile bilmezsiniz.Ancak bazen (şimdi olduğu gibi, bir dosya yazmak için) tam bir yola ihtiyacınız vardır. Çözüm, nesnesinin
MapPath
yöntemini kullanmaktırServer
. Bu, web sitenizin tam yolunu döndürür. Web sitesi kökünün yolunu almak için işlecini (sitenin~
sanal kökünü yeniden kullanmak için) olarakMapPath
kullanacaksınız. (Alt klasörün yolunu almak için buna ~/App_Data/ gibi bir alt klasör adı da geçirebilirsiniz.) Ardından, tam bir yol oluşturmak için yöntemin döndürdüğü ek bilgileri birleştirebilirsiniz. Bu örnekte bir dosya adı ekleyebilirsiniz. ( Razor Söz Dizimini Kullanarak ASP.NET Web Sayfaları Programlamaya Giriş bölümünde dosya ve klasör yollarıyla çalışma hakkında daha fazla bilgi edinebilirsiniz.)Dosya App_Data klasörüne kaydedilir. Bu klasör, ASP.NET Web Sayfaları Sitelerinde Veritabanıyla Çalışmaya Giriş bölümünde açıklandığı gibi, veri dosyalarını depolamak için kullanılan ASP.NET özel bir klasördür.
WriteAllText
nesnesininFile
yöntemi verileri dosyaya yazar. Bu yöntem iki parametre alır: yazacak dosyanın adı (yolu ile) ve yazacak gerçek veriler. İlk parametrenin adının ön ek olarak bir@
karaktere sahip olduğuna dikkat edin. Bu, ASP.NET bir düz metin dizesi değişmez değeri sağladığınızı ve "/" gibi karakterlerin özel şekillerde yorumlanmaması gerektiğini bildirir. (Daha fazla bilgi için bkz. Razor Söz Dizimini Kullanarak ASP.NET Web Programlamaya Giriş.)Not
Kodunuzun dosyaları App_Data klasörüne kaydetmesi için uygulamanın bu klasör için okuma-yazma izinlerine sahip olması gerekir. Geliştirme bilgisayarınızda bu genellikle bir sorun değildir. Ancak, sitenizi bir barındırma sağlayıcısının web sunucusunda yayımladığınızda, bu izinleri açıkça ayarlamanız gerekebilir. Bu kodu bir barındırma sağlayıcısının sunucusunda çalıştırır ve hata alırsanız, bu izinleri nasıl ayarlayabileceğinizi öğrenmek için barındırma sağlayıcısına başvurun.
Sayfayı tarayıcıda çalıştırın.
Alanlara değerleri girin ve Gönder'e tıklayın.
Tarayıcıyı kapatın.
Projeye dönün ve görünümü yenileyin.
data.txt dosyasını açın. Forma gönderdiğiniz veriler dosyadadır.
data.txt dosyasını kapatın.
Varolan Bir Dosyaya Veri Ekleme
Önceki örnekte, içinde yalnızca bir veri parçası olan bir metin dosyası oluşturursunuz WriteAllText
. yöntemini yeniden çağırır ve aynı dosya adını geçirirseniz, var olan dosyanın üzerine tamamen yazılır. Ancak, bir dosya oluşturduktan sonra genellikle dosyanın sonuna yeni veriler eklemek istersiniz. Bunu nesnesinin AppendAllText
yöntemini File
kullanarak yapabilirsiniz.
Web sitesinde UserData.cshtml dosyasının bir kopyasını oluşturun ve kopyayı UserDataMultiple.cshtml olarak adlandırın.
Açma
<!DOCTYPE html>
etiketinden önceki kod bloğunu aşağıdaki kod bloğuyla değiştirin:@{ var result = ""; if (IsPost) { var firstName = Request["FirstName"]; var lastName = Request["LastName"]; var email = Request["Email"]; var userData = firstName + "," + lastName + "," + email + Environment.NewLine; var dataFile = Server.MapPath("~/App_Data/data.txt"); File.AppendAllText (@dataFile, userData); result = "Information saved."; } }
Bu kodda önceki örnekten bir değişiklik var. kullanmak yerine
WriteAllText
yöntemini kullanırthe AppendAllText
. Yöntemleri benzerdir, ancakAppendAllText
verileri dosyanın sonuna ekler. 'WriteAllText
AppendAllText
de olduğu gibi, henüz yoksa dosyayı oluşturur.Sayfayı tarayıcıda çalıştırın.
Alanların değerlerini girin ve Gönder'e tıklayın.
Daha fazla veri ekleyin ve formu yeniden gönderin.
Projenize dönün, proje klasörüne sağ tıklayın ve ardından Yenile'ye tıklayın.
data.txt dosyasını açın. Şimdi girdiğiniz yeni verileri içerir.
Dosyadan Veri Okuma ve Görüntüleme
Metin dosyasına veri yazmanız gerekmeyecek olsa bile, bazen bir dosyadan veri okumanız gerekebilir. Bunu yapmak için nesnesini yeniden kullanabilirsiniz File
. Nesneyi kullanarak her satırı tek tek okuyabilir (satır sonları ile ayırarak) veya öğeyi nasıl ayrılırlarsa ayırsınlar tek tek okuyabilirsiniz File
.
Bu yordamda, önceki örnekte oluşturduğunuz verilerin nasıl okunduğu ve görüntüleneceği gösterilir.
Web sitenizin kökünde DisplayData.cshtml adlı yeni bir dosya oluşturun.
Mevcut içeriği aşağıdakilerle değiştirin:
@{ var result = ""; Array userData = null; char[] delimiterChar = {','}; var dataFile = Server.MapPath("~/App_Data/data.txt"); if (File.Exists(dataFile)) { userData = File.ReadAllLines(dataFile); if (userData == null) { // Empty file. result = "The file is empty."; } } else { // File does not exist. result = "The file does not exist."; } } <!DOCTYPE html> <html> <head> <title>Reading Data from a File</title> </head> <body> <div> <h1>Reading Data from a File</h1> @result @if (result == "") { <ol> @foreach (string dataLine in userData) { <li> User <ul> @foreach (string dataItem in dataLine.Split(delimiterChar)) { <li>@dataItem</li > } </ul> </li> } </ol> } </div> </body> </html>
Kod, önceki örnekte oluşturduğunuz dosyayı adlı
userData
bir değişkene okuyarak başlar ve bu yöntem çağrısını kullanarak:File.ReadAllLines(dataFile)
Bunu yapmak için kod bir
if
deyiminin içindedir. Bir dosyayı okumak istediğinizde, önce dosyanın kullanılabilir olup olmadığını belirlemek için yöntemini kullanmakFile.Exists
iyi bir fikirdir. Kod ayrıca dosyanın boş olup olmadığını denetler.Sayfanın gövdesi, biri diğerinin içinde iç içe yerleştirilmiş iki
foreach
döngü içerir. Dışforeach
döngü, veri dosyasından bir kerede bir satır alır. Bu durumda, satırlar dosyadaki satır sonları tarafından tanımlanır; diğer bir deyişle, her veri öğesi kendi satırındadır. Dış döngü, sıralı bir liste (<li>
öğe) içinde yeni bir öğe (<ol>
öğesi) oluşturur.İç döngü, sınırlayıcı olarak virgül kullanarak her veri satırını öğelere (alanlara) böler. (Önceki örnekten yola çıkarak bu, her satırın üç alan içerdiği anlamına gelir: ad, soyadı ve her biri virgülle ayrılmış e-posta adresi.) İç döngü ayrıca bir
<ul>
liste oluşturur ve veri satırındaki her alan için bir liste öğesi görüntüler.Kod, bir dizi ve
char
veri türü olmak üzere iki veri türünün nasıl kullanılacağını gösterir. yöntemi verileri dizi olarak döndürdüğündenFile.ReadAllLines
dizi gereklidir.char
yöntemi her öğenin türünde olduğu birarray
döndürdüğündenSplit
veri türüchar
gereklidir. (Diziler hakkında bilgi için bkz. Razor Söz Dizimini Kullanarak ASP.NET Web Programlamaya Giriş.)Sayfayı tarayıcıda çalıştırın. Önceki örnekler için girdiğiniz veriler görüntülenir.
İpucu
Microsoft Excel Comma-Delimited Dosyasındaki Verileri Görüntüleme
Elektronik tablodaki verileri virgülle ayrılmış dosya (.csv dosyası) olarak kaydetmek için Microsoft Excel'i kullanabilirsiniz. Bunu yaptığınızda, dosya Excel biçiminde değil düz metin olarak kaydedilir. Elektronik tablodaki her satır, metin dosyasındaki bir satır sonuyla ayrılır ve her veri öğesi virgülle ayrılır. Önceki örnekte gösterilen kodu, yalnızca kodunuzdaki veri dosyasının adını değiştirerek Excel virgülle ayrılmış bir dosyayı okumak için kullanabilirsiniz.
Dosyaları Silme
Web sitenizden dosya silmek için yöntemini kullanabilirsiniz File.Delete
. Bu yordam, kullanıcıların dosyanın adını biliyorlarsa görüntülerin klasöründen bir görüntüyü (.jpg dosya) silmesine nasıl izin vereceğinizi gösterir.
Not
Önemli Üretim web sitesinde genellikle verilerde değişiklik yapma izni olan kullanıcıları kısıtlarsınız. Üyeliği ayarlama ve kullanıcıları sitedeki görevleri gerçekleştirmeye yetkilendirme yolları hakkında bilgi için bkz. ASP.NET Web Sayfaları Sitesine Güvenlik ve Üyelik Ekleme.
Web sitesinde images adlı bir alt klasör oluşturun.
Images klasörüne bir veya daha fazla .jpg dosyası kopyalayın.
Web sitesinin kökünde FileDelete.cshtml adlı yeni bir dosya oluşturun.
Mevcut içeriği aşağıdakilerle değiştirin:
@{ bool deleteSuccess = false; var photoName = ""; if (IsPost) { photoName = Request["photoFileName"] + ".jpg"; var fullPath = Server.MapPath("~/images/" + photoName); if (File.Exists(fullPath)) { File.Delete(fullPath); deleteSuccess = true; } } } <!DOCTYPE html> <html> <head> <title>Delete a Photo</title> </head> <body> <h1>Delete a Photo from the Site</h1> <form name="deletePhoto" action="" method="post"> <p>File name of image to delete (without .jpg extension): <input name="photoFileName" type="text" value="" /> </p> <p><input type="submit" value="Submit" /></p> </form> @if(deleteSuccess) { <p> @photoName deleted! </p> } </body> </html>
Bu sayfa, kullanıcıların görüntü dosyasının adını girebileceği bir form içerir. .jpg dosya adı uzantısını girmez; dosya adını bu şekilde kısıtlayarak, kullanıcıların sitenizdeki rastgele dosyaları silmesini önlemeye yardımcı olursunuz.
Kod, kullanıcının girdiği dosya adını okur ve ardından tam bir yol oluşturur. Yolu oluşturmak için kod geçerli web sitesi yolunu (yöntemi tarafından
Server.MapPath
döndürülen şekilde), images klasör adını, kullanıcının sağladığı adı ve değişmez değer dizesi olarak ".jpg" kullanır.Dosyayı silmek için kod yöntemini çağırarak
File.Delete
az önce oluşturduğunuz tam yolu geçirir. İşaretlemeyi tamamlayan kod, dosyanın silindiğini belirten bir onay iletisi görüntüler.Sayfayı tarayıcıda çalıştırın.
Silinecek dosyanın adını girin ve Gönder'e tıklayın. Dosya silindiyse, dosyanın adı sayfanın en altında görüntülenir.
Kullanıcıların Dosya Yüklemesine izin verme
Yardımcı, FileUpload
kullanıcıların web sitenize dosya yüklemesine olanak tanır. Aşağıdaki yordamda kullanıcıların tek bir dosyayı karşıya yüklemesine nasıl izin verileceği gösterilmektedir.
ASP.NET Web Yardımcıları Kitaplığı'nı, daha önce eklemediyseniz , ASP.NET Web Sayfaları Sitesine Yardımcı Yükleme bölümünde açıklandığı gibi web sitenize ekleyin.
App_Data klasöründe yeni bir klasör oluşturun ve UploadedFiles olarak adlandırın.
Kökte FileUpload.cshtml adlı yeni bir dosya oluşturun.
Sayfadaki mevcut içeriği aşağıdakilerle değiştirin:
@using Microsoft.Web.Helpers; @{ var fileName = ""; if (IsPost) { var fileSavePath = ""; var uploadedFile = Request.Files[0]; fileName = Path.GetFileName(uploadedFile.FileName); fileSavePath = Server.MapPath("~/App_Data/UploadedFiles/" + fileName); uploadedFile.SaveAs(fileSavePath); } } <!DOCTYPE html> <html> <head> <title>FileUpload - Single-File Example</title> </head> <body> <h1>FileUpload - Single-File Example</h1> @FileUpload.GetHtml( initialNumberOfFiles:1, allowMoreFilesToBeAdded:false, includeFormTag:true, uploadText:"Upload") @if (IsPost) { <span>File uploaded!</span><br/> } </body> </html>
Sayfanın gövde bölümü, karşıya yükleme kutusunu ve büyük olasılıkla aşina olduğunuz düğmeleri oluşturmak için yardımcıyı kullanır
FileUpload
:Yardımcı için ayarladığınız özellikler, dosyanın karşıya yüklenmesi için
FileUpload
tek bir kutu istediğinizi ve gönder düğmesinin Karşıya Yükle'yi okumasını istediğinizi belirtir. (Makalenin ilerleyen bölümlerinde daha fazla kutu ekleyeceksiniz.)Kullanıcı Karşıya Yükle'ye tıkladığında, sayfanın üst kısmındaki kod dosyayı alır ve kaydeder.
Request
Normalde form alanlarından değer almak için kullandığınız nesnenin karşıya yüklenen dosyayı (veya dosyaları) içeren birFiles
dizisi de vardır. Tek tek dosyaları dizideki belirli konumlardan alabilirsiniz; örneğin, karşıya yüklenen ilk dosyayı almak için,Request.Files[0]
ikinci dosyayı almak için , vb. alırsınızRequest.Files[1]
. (Programlamada sayım genellikle sıfırdan başlar.)Karşıya yüklenen bir dosyayı getirdiğinizde, işlemek için bir değişkene (burada,
uploadedFile
) yerleştirirsiniz. Karşıya yüklenen dosyanın adını belirlemek için yalnızca özelliğiniFileName
alırsınız. Ancak, kullanıcı bir dosyayı karşıya yüklediğinde,FileName
yolun tamamını içeren kullanıcının özgün adını içerir. Şu şekilde görünebilir:C:\Users\Public\Sample.txt
Ancak tüm bu yol bilgilerini istemezsiniz, çünkü sunucunuzun değil kullanıcının bilgisayarındaki yol budur. Yalnızca gerçek dosya adını (Sample.txt) istiyorsunuz. Yöntemini kullanarak
Path.GetFileName
bir yoldan yalnızca dosyayı çıkarabilirsiniz, örneğin:Path.GetFileName(uploadedFile.FileName)
Path
nesnesi, yolların şeritlemesi, yolları birleştirmesi vb. için kullanabileceğiniz bunun gibi bir dizi yöntemi olan bir yardımcı programdır.Karşıya yüklenen dosyanın adını aldıktan sonra, karşıya yüklenen dosyayı web sitenizde depolamak istediğiniz yer için yeni bir yol oluşturabilirsiniz. Bu durumda, klasör adlarını (App_Data/UploadedFiles) ve yeni kaldırılan dosya adını birleştirerek
Server.MapPath
yeni bir yol oluşturursunuz. Ardından karşıya yüklenen dosyanınSaveAs
yöntemini çağırarak dosyayı kaydedebilirsiniz.Sayfayı tarayıcıda çalıştırın.
Gözat'a tıklayın ve karşıya yüklenecek dosyayı seçin.
Gözat düğmesinin yanındaki metin kutusu yolu ve dosya konumunu içerir.
Karşıya Yükle'ye tıklayın.
Web sitesinde proje klasörüne sağ tıklayın ve ardından Yenile'ye tıklayın.
UploadedFiles klasörünü açın. Karşıya yüklediğiniz dosya klasördedir.
Kullanıcıların birden çok dosya yüklemesine izin verme
Önceki örnekte, kullanıcıların bir dosyayı karşıya yüklemesine izin verirsiniz. Ancak, bir kerede FileUpload
birden fazla dosyayı karşıya yüklemek için yardımcıyı kullanabilirsiniz. Bu, bir kerede bir dosya yüklemenin yorucu olduğu fotoğrafları karşıya yükleme gibi senaryolar için kullanışlıdır. (ASP.NET Web Sayfaları Sitesinde Resimlerle Çalışma bölümünde fotoğraf yükleme hakkında bilgi edinebilirsiniz.) Bu örnekte, kullanıcıların aynı anda iki tane yüklemesine nasıl izin verebileceğiniz gösterilmektedir, ancak bundan daha fazlasını karşıya yüklemek için aynı tekniği kullanabilirsiniz.
Henüz yapmadıysanız, ASP.NET Web Sayfaları Sitesine Yardımcı Yükleme bölümünde açıklandığı gibi web sitenize ASP.NET Web Yardımcıları Kitaplığı'nı ekleyin.
FileUploadMultiple.cshtml adlı yeni bir sayfa oluşturun.
Sayfadaki mevcut içeriği aşağıdakilerle değiştirin:
@using Microsoft.Web.Helpers; @{ var message = ""; if (IsPost) { var fileName = ""; var fileSavePath = ""; int numFiles = Request.Files.Count; int uploadedCount = 0; for(int i =0; i < numFiles; i++) { var uploadedFile = Request.Files[i]; if (uploadedFile.ContentLength > 0) { fileName = Path.GetFileName(uploadedFile.FileName); fileSavePath = Server.MapPath("~/App_Data/UploadedFiles/" + fileName); uploadedFile.SaveAs(fileSavePath); uploadedCount++; } } message = "File upload complete. Total files uploaded: " + uploadedCount.ToString(); } } <!DOCTYPE html> <html> <head><title>FileUpload - Multiple File Example</title></head> <body> <form id="myForm" method="post" enctype="multipart/form-data" action=""> <div> <h1>File Upload - Multiple-File Example</h1> @if (!IsPost) { @FileUpload.GetHtml( initialNumberOfFiles:2, allowMoreFilesToBeAdded:true, includeFormTag:true, addText:"Add another file", uploadText:"Upload") } <span>@message</span> </div> </form> </body> </html>
Bu örnekte, sayfanın gövdesindeki yardımcı,
FileUpload
kullanıcıların varsayılan olarak iki dosyayı karşıya yüklemesine izin verecek şekilde yapılandırılmıştır.allowMoreFilesToBeAdded
olarak ayarlandığındantrue
, yardımcı kullanıcının daha fazla karşıya yükleme kutusu eklemesine olanak tanıyan bir bağlantı oluşturur:Kullanıcının karşıya yüklediği dosyaları işlemek için kod, önceki örnekte kullandığınız temel tekniği kullanır; dosyasından
Request.Files
bir dosya alın ve dosyayı kaydedin. (Doğru dosya adını ve yolunu almak için yapmanız gereken çeşitli işlemler dahil.) Bu kez yapılan yenilik, kullanıcının birden çok dosya yükleyebileceği ve çok fazla dosya bilmediğinizdir. Öğrenmek için alabilirsinizRequest.Files.Count
.Bu sayı elde olduğunda, içinde
Request.Files
döngü yapabilir, her dosyayı sırayla getirebilir ve kaydedebilirsiniz. Bir koleksiyonda bilinen sayıda döngü yapmak istediğinizde, aşağıdaki gibi birfor
döngü kullanabilirsiniz:for(int i =0; i < numFiles; i++) { var uploadedFile = Request.Files[i]; if (uploadedFile.ContentLength > 0) { fileName = Path.GetFileName(uploadedFile.FileName); // etc. }
Değişken
i
, sıfırdan ayarladığınız üst sınıra giden geçici bir sayaçtır. Bu durumda, üst sınır dosya sayısıdır. Ancak sayaç, ASP.NET'daki sayma senaryolarında olduğu gibi sıfırdan başladığından, üst sınır aslında dosya sayısının bir altındadır. (Üç dosya karşıya yüklenirse, sayı sıfırdan 2'ye kadardır.)uploadedCount
değişkeni, başarıyla karşıya yüklenen ve kaydedilen tüm dosyaların toplamını alır. Bu kod, beklenen bir dosyanın karşıya yüklenememe olasılığını ifade edebilir.Sayfayı tarayıcıda çalıştırın. Tarayıcı, sayfayı ve iki karşıya yükleme kutusunu görüntüler.
Karşıya yüklenecek iki dosyayı seçin.
Başka bir dosya ekle'ye tıklayın. Sayfada yeni bir karşıya yükleme kutusu görüntülenir.
Karşıya Yükle'ye tıklayın.
Web sitesinde proje klasörüne sağ tıklayın ve ardından Yenile'ye tıklayın.
Başarıyla karşıya yüklenen dosyaları görmek için UploadedFiles klasörünü açın.
Ek Kaynaklar
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin