ASP.NET Multi Upload
Merhaba arkadaşlar, bu makalemizde web sitelerinde çok sık kullandığımız file upload kontrolünü genişleterek Multi Upload kontrolü oluşturacağız.
ASP.NET Multi Upload
File upload kontrolü bazen tek basına yetmez. yani tek dosya upload'u bizim için yeterli olmaz. Birden fazla dosya upload etmek istedigimizde bunu tek tek yapmak bizim için oldukça zor olur. Hele upload edilecek dosya sayısı belli degilse yada degiskense...
Burada biz kendi çözümümüzü gelistirmeliyiz. Ben de bu makale de size kendi gelistirmis oldugum çözümü anlatacagım. Bunu nasıl yapacagız ? Run time'da sayfamıza file upload kontroller ekleyerek bu islemi gerçeklestirebiliriz.
protectedvoid Page_Load(object sender, EventArgs e)
{
FileUpload myFileUpload = new FileUpload();
myFileUpload.ID = "Upload_Dosyasi";
this.form1.Controls.Add(myFileUpload);
}
Bu kod sayfa açıldıgında formumuza formupload kontrolü ekleyecek..

Evet tek bir kontrolü eklemek istedigimizde bunu yapmak yukarıdaki kadar kolay. Simdi bu islemi çoklu upload için yazalım.
Ilk olarak sayfamıza bir adet Panel(upload kontrolleri bu panele ekleyecegiz), DropDownList(Kaç adet File Upload kontrolü sayfamıza eklenecek bunu belirleyecek ben item olarak 3,5,7,10 ekledim) Button(File Upload kontrolünde seçilen dosyaları upload edecek) Benim olusturdugum sayfa asagıdaki gibidir; 
Sayfamız ilk açıldıgında default olarak 10 adet file upload kontrolü eklensin.
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 1; i <= 10; i++)//10 kere dön
{
FileUpload myFileUpload = new FileUpload();//Yeni File Upload Kontrolünin instance'ni al
myFileUpload.ID = "Upload_" + i;//Erismek için ID'ni belirle
this.Panel1.Controls.Add(myFileUpload);//Kontrolü panel içine ekle
}
}
Evet simdi projemizi çalıstıralım;

Sayfamıza 10 dan daha az yada daha fazla kontrol eklemek isteyebiliriz. Bunun için seçecegimiz Dropdownda deçecegimiz göre degisecek. Ilk olarak Dropdownun AutoPostback özelligini True yapalım. Simdi gerekli kodları yazalım.
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Panel1.Controls.Clear();
for (int i = 1; i <= Convert.ToInt32(DropDownList1.SelectedValue); i++)
{
FileUpload myFileUpload = new FileUpload();
myFileUpload.ID = "Upload_" + i;
this.Panel1.Controls.Add(myFileUpload);
}
}
Projemizi tekrar çalıstıralım ve ve dropdowndaki degeri degistirelim;

Evet 3 adet kontrol eklendi... Simdi sayfamıza ekledigimiz kontroller için upload islemini yapalım. Button'umuza tıklayalım;
FileUpload myFileUpload; // Unutmayalım !!
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 1; i <= Convert.ToInt32(DropDownList1.SelectedValue); i++)
{
myFileUpload = ((FileUpload)Panel1.FindControl("upload_" + i.ToString()));
if (myFileUpload.HasFile)
{
myFileUpload.SaveAs(Server.MapPath("images/"+myFileUpload.FileName));
Response.Write(i.ToString()+". Dosya "+ " Upload Edilen Dosya Adı:"+myFileUpload.FileName + "<br/>");
}
}
}
Evet simdi isterseniz bunu test edelim;

Evet simdi dosyalarımızı upload edelim...

Image klasörü içine gidip upload kontrollere bakalım gerçekten eklemismi : )

EVET 1.gif,2.gif ve 3.gif image klasörümüze eklendi...
Eger 3 tane upload yetmediyse dropdowdan istedigimiz sayıyı seçelim ve istediginiz kadar upload yapalım : ) Bu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim.
Örnek Kodları buradan indirebilirsiniz
Sem GÖKSU
MCP | MCAD.NET | MCTS
semgoksu@semgoksu.com
Kaynaklar
http://msdn.com
Yorumlar (8)
dosya isimlerini veritabanına göre değiştirip kaydeden bişi yap ta işe yarasın:D
Sem Bey; sizin yaptığınız gibi yaptım ama ben Vb kodlarını kullandım, fincontrol kullanırken "object reference not set to an instance of an object" hatası geliyor. dim myFileUpload as FileUpload for i=1 to 10 myFileUpload=me.panel1.findcontrol("upload_" & i.tostring) next
Hocam fu=((FileUpload)Panel1.FindControl("upload_i.toString()")); Burada panel içinde ki upload_i.toString() ID li file upload kontrolünü yakalayamıyoruz.Obje boş veya örneği alınmamış hatası dönüyor nedeni ne olabilir.
Arkadaşlar makaleyi çok uzun zaman önce yazmıştım ve herhangi bir problem yoktu. Müsait bir zamanda tekrar deneyeceğim ve eğer hata varsa düzeltip size bildireceğim.
Arkadaşlar makaled de herhangi bir problem yok. Örnek kodlarıda ekledim. İsterseniz indirebilirsiniz. Kolay gelsin.
Hocam sağolun
Hocam Örnek Dosyada herhangi bir problem yok evet ama örnek uygulamada file upload nesnelerini formun load olayında oluşturmuşsunuz ben bu makaledeki gibi dropdown un selectIndexchanged olayında oluşturmak istiyorum ii hoş oluşturuyor ancak Panel içindeki file upload kontrolünü yakalayamıyor.bunun nedeni ne olabilir hocam
Makale için teşekkürler peki bunu MSSQL veritabanına nasıl yazdırabiliriz. Bu konuda yardımcı olabilir misiniz.