FileUpload sunucuya dosya yüklemek için, Asp.Net 2.0 ile birlikte gelen bir sunucu kontrolüdür. Bu yazımda detaylı olarak bu kontrolden bahsedecek ve örneklerle konuyu anlatmaya çalışacağım. Fileupload’ın yapısı ve kullanımı gayet basittir. Kontrolü sayfanıza yerleştirdiğinizde 2 kısımdan oluştuğunu görürsünüz. Kontrolün sol tarafında sunucuya yüklenecek dosyanın yolunu gösteren bir metin kutusu bulunur. Sağ tarafta ise üzerinde Browse yazan, tıkladığınızda yüklemek istediğiniz dosyayı seçmenize olanak sağlayan bir buton yer alır. Fileupload kontrolü dosyayı seçer seçmez sunucuya yüklemez. Bu işlem genellikle sayfadaki başka bir Buton tarafından tetiklenir.
Bu kontrol çok kullanışlı birtakım özelliklere sahip.Örneğin, yüklenecek dosyanın boyutunu kontrol ederek çok yüksek boyutlu dosyaların yüklenmesine engel olabilirsiniz ya da sadece belirli formattaki (jpeg, pdf gibi) dosyaların yüklenmesini sağlayabilirsiniz.
Şimdi Asp.net FileUpload kontrolünün kullanımına bir bakalım.
Öncelikle dosyamızı sunucudaki resimler klasörüne göndereceğimiz için sitenin ana dizininde resimler isminde bir klasör oluşturun. Web formumuza birer tane fileupload, buton ve label kontrolü ekleyerek aşağıdaki ekran görüntüsünü oluşturuyoruz.

Yükle butonunun Click Eventini aşağıdaki gibi oluşturuyoruz.
1 2 3 4 5 6 7 8 9 10 11 |
protected void dosyaYukle_Click(object sender, EventArgs e) { if (FileUpload1.HasFile)//Kullanıcı fileupload ile bir dosya seçmiş ise işlemleri gerçekleştir. { FileUpload1.SaveAs(Server.MapPath("~/resimler/") +FileUpload1.FileName); //Sunucuda ki resimler klasörünün içerisine resmi olduğu gibi yükledik. lblMesaj.Text = "Dosya yüklendi."; } else lblMesaj.Text = "Lütfen bir dosya seçiniz."; } |
Örneğimiz seçilen dosyayı sunucuda ki resimler klasörüne gönderdi. Kontrolün en basit kullanım şekliyle bir örnek yaptık fakat bu şekilde bir kullanım web sitemizde bir takım problemlere yol açabilir.
Bu problemler neler bir bakalım.
- Genellikle web sitelerine sadece resim dosyalarının yüklenmesi istenir. Farklı türdeki dosyalar sitenize hatta tüm sunucuya zarar verebilir.
- Dosya boyutuna da bir kısıtlama getirmemiz gerekiyor örneğin 3 Mbyte gibi. Sunucumuzun yada bize ayrılmış alanın da bir sınırı var ve verimli kullanmak gerekiyor.
- Resmimizi olduğu gibi sunucuya gönderdik. Peki aynı isimle tekrar bir resim gönderilmek istenirse ne olacak.
Bu problemleri gidermek için kodumuzu aşağıdaki şekilde değiştiriyoruz. Açıklamaları yine kodların ara satırlarına ekledim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
protected void dosyaYukle_Click(object sender, EventArgs e) { if (FileUpload1.HasFile)//Kullanıcı fileupload ile bir dosya seçmiş ise işlemleri gerçekleştir. { if (FileUpload1.PostedFile.ContentType == "image/jpeg") //Sadece jpeg dosyalarını yüklenmesine izin veriyoruz. { if (FileUpload1.PostedFile.ContentLength < 1024000) //Maksimum 1MB'lık dosyaların yüklenmesine izin veriyoruz. { string isim = Guid.NewGuid().ToString(); //Benzersiz bir isim oluşturduk.İsimlendirme için farklı yöntemlerde kullanabilirsiniz. FileUpload1.SaveAs(Server.MapPath("~/resimler/") + isim + ".jpeg"); //Sunucuda ki resimler klasörünün içerisine seçilen resmi oluşturduğumuz benzersiz isim ile kaydediyoruz. lblMesaj.Text = "Dosya yüklendi. Alınan dosyanın detayları:<br>" + "Dosya Türü:" + FileUpload1.PostedFile.ContentType +"<br>"+ "Dosya Boyutu:" + FileUpload1.PostedFile.ContentLength; //Detaylı bir bilgi mesajı verdik. } else lblMesaj.Text = "Dsya boyutu maximum 1MB olmalıdır."; } else lblMesaj.Text = "Sadece jpeg uzantılı dosyalar yüklenebilir."; } else lblMesaj.Text = "Lütfen bir dosya seçiniz."; } |
Asp.net Fileupload Kullanımıyla ilgili sorularınız için yorum bırakabilirsiniz. Yüklediğiniz resimleri boyutlandırmak ve üzerine yazı yazmak isimli yazımıza göz atın.
file upload yoluyla kaydedilen bir dosyayı nasıl geri çekeriz
bende bu sorunun cevabını merak ediyorum buldunuz mu
Elinize sağlık. Peki yüklendiğini “Progresbar” ile nasıl gstere bilirim?