Asp.Net Çoklu FileUpload Oluşturmak ve Kullanmak

Geliştirmiş olduğumuz projelerimizde özellikle resim galerisi gibi sayfalarda birden fazla resim seçip yükleme ihtiyacımız olabilir. Bunun için yapabileceğimiz en basit yöntem sayfamıza ihtiyacımız kadar FileUpload nesnesi eklemek olacaktır. Ancak bu yöntem uzun ve istenmeyen bir çözüm olacaktır. Her nesne için tek tek “Dosya mevcut mu?,Mevcut ise boyutu yükleme sınırımıza uygun mu? Uygun ise uzantısı uygun mu?” gibi her nesne için kontrol kodlarımızı tekrar tekrar yazmak zorunda kalacağız.
Daha güzel bir çözüm ise ihtiyacımız kadar olan FileUpload nesnemizi Sayfa yüklenirken oluşturmak olacaktır. Bu sayede daha kolay ve daha az kod ile dosyalarımızı sunucuya yüklemiş olacağız. Değişiklik yapma ihtiyacı meydana geldiğinde tek bir yerden değişiklik yaparak tüm yapıyı değiştirmiş olacağız.

Örneğimde kodlar arasında satır açıklamaları ekleyerek anlatıma devam ediyorum.

[csharp]

//Kaç tane FileUpload nesnesi oluşturacağımızın bilgisini tutacağımız değişkenimiz.
//Tüm kod bloglarında erişebilmek için değişken class scope içerisinde tanımlandı.
int fuCount = 6;
protected void Page_Load(object sender, EventArgs e)
{
CreateFileUpload();

}
void CreateFileUpload()
{
//FileUpload dizini tanımlıyorum.
FileUpload[] fu = new FileUpload[fuCount];
//Oluşturacağım FileUpload kontrolü kadar döngümü kuruyor ve içerindeki kodları fuCount kadar çalıştırıyorum.
for (int i = 0; i < fuCount; i++)
{
//FileUpload nesnemin instance’sini alıyorum.
fu[i] = new FileUpload();
//Oluşacak her FileUpload nesnemi birbirinden ayırt edebilmek için ID özelliğine "fuUploadImage_" prefix ile başlatıp i. değeri ekliyorum. fuUploadImage_1 gibi isimlendirilmiş olacak.
fu[i].ID = "fuUploadImage_" + i.ToString();
//Oluşturduğum nesnemi sayfamdaki panel’e ekliyorum.
pnlFileUpload.Controls.Add(fu[i]);

//Kontroller yanyana değil alt alta oluşması için yine runtime’da Literal nesnesi uretip Text özelliğine HTML kodu olan "<br />" alt satıra geçme kodunu ekliyorum.
Literal ltr = new Literal();
ltr.Text = "<br />";
pnlFileUpload.Controls.Add(ltr);
}
}

protected void btnUpload_Click(object sender, EventArgs e)
{
//Oluşturmuş olduğumuz nesnemiz kadar yine döngü kuruyoruz.
for (int i = 0; i < fuCount; i++)
{
//FileUpload nesnesi tanımlıyoruz ve panel içerisinde bulunan fileUpload nesnemizi FindControl ile bulup atıyoruz.
FileUpload fu = (FileUpload)pnlFileUpload.FindControl("fuUploadImage_"+i.ToString());
//Sırası ile nesnemizde seçili bir dosya olup olmadığını kontrol ediyoruz.
if (fu.HasFile)
{
//Eğer seçili bir dosya var ise bu dosyayı "ImgFiles" klasörüne kaydediyoruz.
fu.SaveAs(Server.MapPath("ImgFiles/" + fu.FileName));
}
}
}

[/csharp]

FileUpload

Yararlı olması dileğiyle…

Mesut Güneş

Selçuk Üniversitesi Bilgisayar programcılığı bölümünden mezun olduktan sonra birçok firmada Yazılım, İş zekası ve Veritabanı Uzmanı olarak çalıştım. Şuan Türkiye’nin en büyük şirketlerinden biri olan Doğan Online’da Veritabanı Yöneticisi olarak çalışıyorum.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.