Asp.NET FileUpload Çoklu Dosya Seçimi
Asp.NET 4.5 öncesinde, Microsoft ekibine geliştirdikleri FileUpload nesnesi üzerinde birazdaha yaratıcı iş çıkarmalarını umardım.En çok talep ettiğim şey ise, çoklu dosya seçimiydi.Asp.NET 4.5 ile bu özelliğe nihayetinde kavuşmuş olduk.Şimdi gelin FileUpload nesnesinde çoklu dosya seçimi nasıl yapılıyor inceleyelim.
FileUpload nesnemize çoklu dosya seçimi yapabilmemiz için “AllowMultiple” ve “PostedFiles” isminde iki özellik eklenmiştir.
AllowMultiple = Varsayılan olarak False değerine sahip olan bu özellik, Client tarafından birden çok dosya seçilmesini sağlıyor.
PostedFiles = Seçilen dosyalara bu property üzerinden erişebiliyoruz.
Örnek olarak bir Asp.NET projesine birer tane FileUpload ve Button nesneleri ekleyelim.
<asp:FileUpload AllowMultiple="true" ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
Gördüğünüz gibi eklediğimiz FileUpload nesnesinin AllowMultiple özelliği “True” değerine sahip.Yani çoklu dosya seçimine izin verecektir.
Button nesnemizin Click olayına gelerek aşağıdaki kodu yazalım.
protected void Button1_Click(object sender, EventArgs e) { IList<HttpPostedFile> SecilenDosyalar = FileUpload1.PostedFiles; }
Yukarıdaki kod bloğunu incelerseniz eğer, List<HttpPostedFile> interface i tipinden olan “SecilenDosyalar” isimli koleksiyonumuz da, FileUpload nesnesinden seçilen dosyalar listelenecektir.
Projemizi derleyip çalıştırdığımız zaman, FileUpload nesnemizin açılan penceresinde, CTRL + Left Click kombinasyonunu kullanarak birden çok resim seçebilirsiniz.
Button nesnesine tıklandıktan sonra ise,
Yukarıdaki ekran görüntüsünden de anlaşıldığı üzere, PostedFiles özelliği üzerinden seçilen bütün resimlere ulaşabiliyoruz.
Eğer seçilen resimleri bir dizine kaydetmek isterseniz aşağıdaki kod bloğunu inceleyiniz.
protected void Button1_Click(object sender, EventArgs e) { IList<HttpPostedFile> SecilenDosyalar = FileUpload1.PostedFiles; for (int i = 0; i < SecilenDosyalar.Count; i++) { FileUpload1.PostedFiles[i].SaveAs(Server.MapPath("~/Resimler/") + FileUpload1.PostedFiles[i].FileName); } }
Faydalanmanız dileğiyle..
İyi çalışmalar..
Eline Sağlık
Elinize sağlık. Size bir sorum olacak ! Çoklu seçtiğimiz resimlerin kategori altında veritabanına kayıt yaparken bir başlık berlirleyip seçtiğim bütün fotoğraflara yazdırabilir miyim ? Örneğin 30 tane foto seçtim ve bir başlık belirledim Bilgisayar adında ve bu seçtiğim 30 fotoğrafın hepsinin başlığına Bilgisayar yazısını kaydedebilir miyiz ?
Merhaba,
Anlayamadığım resimlerin başlığı dediğiniz resimlerin adı mı?
FileUpload ile seçilebilecek çoklu dosya adedini maksimum 5 adet olarak nasıl kısıtlayabiliriz.
Gelen koleksiyon değerinin Count özelliğini istediğiniz adet ile kıyaslayarak kontrol etmeniz yeterlidir.
Örneğin;
gibi…
Çok teşekkür ederim.
Peki yüklenecek her bir resim boyutunun 3Mb üzerindeyse kullanıcıya uyarı vermesini olmasını nasıl sağlayabiliriz. Aşağıdaki şekilde yapılda olmuyor.
Operatörü aşağıdaki gibi “>” olarak değiştirmen yeterli.
Bir sorum olacak bu yüklediğimiz resimleri kendi kontrol panelim ile nasıl ekleyebilirim
@Html.LabelFor(model => model.Image, htmlAttributes: new { @class = “control-label col-md-2” })
@Html.EditorFor(model => model.Image, new { htmlAttributes = new { @class = “form-control” } })
@Html.ValidationMessageFor(model => model.Image, “”, new { @class = “text-danger” })
böyle bir ilan ekleme kodum var ama sadece 1 tane resim ekleyebiliyorum.