Sadece bir Site

aspnet 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.
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?
Runtime’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
  1. Panel(upload kontrolleri bu panele ekleyeceğiz),
  2. DropDownList(Kaç adet File Upload kontrolü sayfamıza eklenecek bunu belirleyecek ben item olarak 3,5,7,10 ekledim)
  3. 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.

Yorum Kuralları:
1- Yaptığınız yorumun, yazıyla alakalı olmasına özen gösteriniz.
2- Yazım ve dilbilgisi konusundaki hassasiyetinizi yorumlarınızda da gösteriniz.
3- Her zaman nazik bir üslup kullanmaya özen gösteriniz.
4- Yukarıdaki kurallardan herhangi birine uymamanız durumunda, site sahibi yorumunuzu yayınlama ya da yayınlamama hakkına sahiptir.

Blogger tarafından desteklenmektedir.