23 Şub 2007 ASP.NET Multi Upload Kategori: ASP.NET Etiketler: ASP.NETASP.NET 2.0 8 Yorum 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 UploadFile 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 indirebilirsinizSem GÖKSUMCP | MCAD.NET | MCTSsemgoksu@semgoksu.com Kaynaklarhttp://msdn.com Yorum (8) davut salim / 10.5.2009 18:07:14 dosya isimlerini veritabanına göre değiştirip kaydeden bişi yap ta işe yarasın:D Rustem / 31.10.2009 02:05:14 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 onur / 3.11.2009 03:51:38 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. Sem Göksu / 3.11.2009 11:01:58 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. Sem Göksu / 3.11.2009 11:17:05 Arkadaşlar makaled de herhangi bir problem yok. Örnek kodlarıda ekledim. İsterseniz indirebilirsiniz. Kolay gelsin. onur / 3.11.2009 12:41:34 Hocam sağolun olfonur / 3.11.2009 22:23:36 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 Hakan Yusuf / 12.3.2014 10:32:38 Makale için teşekkürler peki bunu MSSQL veritabanına nasıl yazdırabiliriz. Bu konuda yardımcı olabilir misiniz. Yorum Yaz * Ad Soyad: * Email: * Message:
Yorum (8) davut salim / 10.5.2009 18:07:14 dosya isimlerini veritabanına göre değiştirip kaydeden bişi yap ta işe yarasın:D Rustem / 31.10.2009 02:05:14 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 onur / 3.11.2009 03:51:38 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. Sem Göksu / 3.11.2009 11:01:58 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. Sem Göksu / 3.11.2009 11:17:05 Arkadaşlar makaled de herhangi bir problem yok. Örnek kodlarıda ekledim. İsterseniz indirebilirsiniz. Kolay gelsin. onur / 3.11.2009 12:41:34 Hocam sağolun olfonur / 3.11.2009 22:23:36 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 Hakan Yusuf / 12.3.2014 10:32:38 Makale için teşekkürler peki bunu MSSQL veritabanına nasıl yazdırabiliriz. Bu konuda yardımcı olabilir misiniz.
davut salim / 10.5.2009 18:07:14 dosya isimlerini veritabanına göre değiştirip kaydeden bişi yap ta işe yarasın:D
Rustem / 31.10.2009 02:05:14 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
onur / 3.11.2009 03:51:38 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.
Sem Göksu / 3.11.2009 11:01:58 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.
Sem Göksu / 3.11.2009 11:17:05 Arkadaşlar makaled de herhangi bir problem yok. Örnek kodlarıda ekledim. İsterseniz indirebilirsiniz. Kolay gelsin.
olfonur / 3.11.2009 22:23:36 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
Hakan Yusuf / 12.3.2014 10:32:38 Makale için teşekkürler peki bunu MSSQL veritabanına nasıl yazdırabiliriz. Bu konuda yardımcı olabilir misiniz.