11 Mart 2015 Çarşamba

Asp.Net C# Dinamik Olarak Çoklu FileUpload Kullanma ve Eklemek.

Birden fazla FileUpload kullanma için yapacağımız işlem sayfamıza kaç tane FileUpload koymak istiyorsak tek tek eklemek olacaktır. Fakat bu yol hem uzun hem de düşünsenize her FileUpload nesnesine ayrı ayrı koşul (Dosya var mı?, Varsa uzantıları uygun mu?, Boyutu uygun mu? vb.)  oluşturmamız gerekecek.
Öncelikle türeteceğimiz FileUpload nesnelerini düzenli bir şekilde ekranda tutmak için elemanlarımızı Panele ekledik.
Daha sonra türeteceğimiz FileUpload lardan seçilen dosyaları yüklemek için bir button ekleyelim. Burada onClick olarak atadığımız eventi code behind de kullanacağız.
Buraya kadar source kısmında yapmamız gerekenleri gerçekleştirdik. Şimdi seçtiğimiz dosyaları yüklemek için bir resimler klasörü oluşturalım. Ve daha sonrasında code behind kısmına geçelim
Dinamik kontrol ekleme yazımda belirtiğim gibi Asp.Net projelerinde Page Life Cycle(Sayfa yaşam döngüsü) vardır. Her olayın bir gerçekleşme sırası mevcuttur. Bu yüzden ViewState yüklenmeden bizim kontrollerimizi eklememiz mantıklı olacaktır.  ViewState oluşmadan işlemimizi en doğru şekilde gerçekleştirebileceğimiz yer OnInit eventıdır.
*.aspx dosyası içeriği;
<asp:Panel ID=”pnlYuklemePaneli” runat=”server” Height=”184px” Width=”418px”>
</asp:Panel>
<asp:Button ID=”Button1″ runat=”server” Text=”Button” onclick=”Button1_Click” />
*.aspx.cs dosyası içeriği;
//Bu değişken fileupload nesnesinden ne kadar oluşturacağımızı tutmaktadır.
int kacAdet = 5;
protected override void OnInit(EventArgs e)
{
//Dizi olarak FileUpload nesnesini tanımlıyoruz.
FileUpload[] fuUpload = new FileUpload[kacAdet];
//Kaç adet FileUpload oluşturacaksak o kadar ekrana oluşturmasını sağlıyoruz.
for (int i = 0; i < kacAdet; i++)
{
//Nesneye FileUpload özelliğini atıyoruz.
fuUpload[i] = new FileUpload();
//Nesnenin id sini veriyorum.
fuUpload[i].ID = “fuUpload” + i.ToString();
//Ben panele eklemeyi tercih ettim siz istediğiniz ilgili bir nesneye ekleyebilirsiniz
pnlYuklemePaneli.Controls.Add(fuUpload[i]);
//Bu 3 satırlık kodu yapmamızın sebebi her FileUpload nesnesinden sonra alt satıra geçirmeyi sağlamaktadır.
Literal lblAltSatir = new Literal();
lblAltSatir.Text = “<br/>”;
pnlYuklemePaneli.Controls.Add(lblAltSatir);
}
base.OnInit(e);
}
protected void Button1_Click(object sender, EventArgs e)
{
//Toplam oluşturduğumuz FileUpload nesnemiz kadar döngü oluşturuyoruz. çünkü oluşturduğumuz tüm FileUpload nesnelerine erişmemiz gerekiyor.
for (int i = 0; i < kacAdet; i++)
{
/*Burada FileUploadları panele eklediğimiz için nesnemizi panelde bulup üzerinde işlem yapmak üzere tekrar tanımlıyoruz.
* Dikkat etmemiz gereken nokta Page_Load eventinde tanımladığımız ID ile burada tanımladığımız ID nin aynı olması gerekmektedir.
* Biz aynı olmasını sağlamak için string olarak fuUpload ve yanına her döngünün i değerini ekledik :)
* */
FileUpload fuUpload = ((FileUpload)pnlYuklemePaneli.FindControl(“fuUpload” + i.ToString()));
//Daha sonra tanımladığımız nesnenin boş olup olmadığını kontrol ediyoruz
if (fuUpload.HasFile)
{
/* Burada kaydetme işlemini yapıyoruz.
* resimler klasörüne FileUpload da seçilen dosyanın ismiyle doğrudan kaydediyoruz
* */
fuUpload.SaveAs(Server.MapPath(“resimler/” + fuUpload.FileName));
/*Tabi yükleneceklere herhangi bir kısıtlama koymadık. Boyut, uzantı, isim vb.
* Koydunuz koşullar çerçevesinde FileUploadlar ile dosyalarınız seçtikten sonra Yükle buttonuna basmanız durumunda klasöre dosyaları yükler.
* */
}
}
}
Kaynak:

Hiç yorum yok :

Yorum Gönder