Makale Özeti

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.

Makale

ASP.NET Multi Upload

File upload kontrolü bazen tek başına yetmez.  yani tek dosya upload’u bizim için yeterli olmaz. Birden fazla dosya upload etmek istediğimizde bunu tek tek yapmak bizim için oldukça zor olur. Hele upload edilecek dosya sayısı belli değilse yada değişkense...

Burada biz kendi çözümümüzü geliştirmeliyiz. Ben de bu makale de size kendi geliştirmiş olduğum çözümü anlatacağım. Bunu nasıl yapacağız ?

Run time’da sayfamıza file upload kontroller ekleyerek bu işlemi gerçekleştirebiliriz. 

protected void Page_Load(object sender, EventArgs e)

    {

        FileUpload myFileUpload = new FileUpload();

        myFileUpload.ID = "Upload_Dosyasi";

        this.form1.Controls.Add(myFileUpload);

    }

 

Bu kod sayfa açıldığında formumuza formupload kontrolü ekleyecek..

Evet tek bir kontrolü eklemek istediğimizde bunu yapmak yukarıdaki kadar kolay. Şimdi bu işlemi çoklu upload için yazalım.

İlk olarak sayfamıza bir adet

Panel(upload kontrolleri bu panele ekleyeceğiz),

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 oluşturduğum sayfa aşağıdaki gibidir;




Sayfamız ilk açıldığı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;//Erişmek için ID’ni belirle

            this.Panel1.Controls.Add(myFileUpload);//Kontrolü panel içine ekle

        }

    }

Evet şimdi projemizi çalıştıralım;


Sayfamıza 10 dan daha az yada daha fazla kontrol eklemek isteyebiliriz. Bunun için seçeceğimiz Dropdownda deçeceğimiz göre değişecek. İlk olarak Dropdownun AutoPostback özelliğini True yapalım. Şimdi 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ıştıralım ve ve dropdowndaki değeri değiştirelim;


Evet 3 adet kontrol eklendi... Şimdi sayfamıza eklediğimiz kontroller için upload işlemini yapalım. Button’umuza tıklayalım;

    FileUpload myFileUpload;

    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 şimdi isterseniz bunu test edelim;

Evet şimdi dosyalarımızı upload edelim...


İmage klasörü içine gidip upload kontrollere bakalım gerçekten eklemişmi : )


EVET 1.gif,2.gif ve 3.gif image klasörümüze eklendi...

Eğer 3 tane upload yetmediyse dropdowdan istediğimiz sayıyı seçelim ve istediğiniz kadar upload yapalım : )

Bu makalenin de sonuna geldik, başka bir makalede görüşmek üzere başarı ve iyi günler dilerim.

Sem GÖKSU
MCP | MCAD.NET | MCTS

Örnek Kodlar için mail adresimi kullanabilirsiniz
semgoksu@semgoksu.com

Kaynaklar
http://msdn.com ve ben :)