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]
Yararlı olması dileğiyle…