11 Mart 2015 Çarşamba

Asp.NET C# FileUpload Nesnesi Kullanımı (Dosya Yükleme)

Fileupload kontrolünün kullanımı, metodları, Basit kodlarla alınabilecek güvenlik önlemlerini yaptığımız bir örnek;
uyeol.aspx Sayfamıza bir adet fileupload nesnesi (Id=uploadresim), bir adet buton (Id=btnresimyukle), bir adet image (Id=Imageyukresim), bir adet label(Id=lblresimsonuc) ve sadece resim yükleme kontrolüyapmak için RegularExpressionValidator (Id=RegularExpressionValidator2)  ekledik. Ben üye ol sayfasında kullandığım için aşağıdaki görseller oradan alındı.
fileupload1fileupload2RegularExpressionValidator nesnesinin  ControltoValidate özelliğine  fileupload nesnesini bağlamalı ve Validate Expression içinede sadece istenen uzantılar için ^.+\.((jpg)|(gif)|(jpeg)|(png)|(bmp)) yazmak gerekiyor.
uyeol.aspx.cs sayfamızda olayımız şöyle olacak;
protected void btnresimyukle_Click(object sender, EventArgs e)
{
if (uploadresim.HasFile)
{
if (uploadresim.PostedFile.ContentLength > 1024000)
{
lblresimsonuc.Text = “Seçtiğiniz Dosyanın Boyutu Tanımlanandan Daha Büyük!”;
}
else
{
uploadresim.SaveAs(Server.MapPath(“resimler/”) + uploadresim.FileName);//inen dosyanın kaydedileceği yer ve isim
lblresimsonuc.Text = “Dosya Eklendi. Dosya Boyutu:” +Convert.ToString(uploadresim.PostedFile.ContentLength);//dosya yükleme biligileri
lblresimsonuc.Text = lblresimsonuc.Text + ” Dosya Türü:” + uploadresim.PostedFile.ContentType;
Imageyukresim.ImageUrl = “~/resimler/” + uploadresim.FileName;//yüklenen dosyayı image nesnesinde göster
Imageyukresim.Visible = true;
Imageyukresim.Width = 300;
Imageyukresim.Height = 300;
Session[“resimyolu”] = “resimler/” + uploadresim.FileName;//bana dosya yolu lazımdı. onun için yazdım olmasada olur.
}
}
else
{
Response.Write(“Dosya Yükleme Hatası”);
Session[“resimyolu”] = “resimler/herkesinresmi.jpg”;//bana dosya yolu lazımdı. onun için yazdım olmasada olur.
}
Not: Bu sınıfın özellikleri.
Fileupload kontrolünü toolboxdan sürükleyerek formunuza taşıdığınızda kontrolümüzün diğer kontrollerden farklı olarak birkaç özellik,fonksiyon veya alt yordamı var.
.filebytesGönderilen dosyanın içeriğini byte cinsinden getirir
.filecontentGönderilen dosyayı stream cinsinden alır
.filenamedosyam.uzanti şeklinde dosya adını döndürür
.postedfileHttpPostedFile classını çağırır
.saveasc:\klasor\dosyaadi.uzanti şeklinde verdiğimizde o konuma kaydeder
postedfile sınıfı ve alt yordamları;
.contentlengthDosyanın boyutunu byte olarak döndürür(örnekte dosya boyutunu daha şık göstermenize yardımcı olabilecek bir fonksiyon mevcut)
.contenttypeDosyanın türünü döndürür jpeg için image/pjpeg olabilmektedir örneğin.
.filenameDosyanın kullanıcı bilgisayarındaki yolunu gösterir. e:\klasorum\dosya.jpg gibi
.inputstreamDosyanın içeriğini stream olarak gönderir. Üstteki Fileupload kontrolünün filecontentiyle aynıdır
.saveasDosyayı belirtilen yere kaydetmeye yarar. Fileupload kontrolünün save as iyle aynıdır
Son olarak web.config dosyasında tüm sayfanın geneli için ayarlama yapmak gerekebilir.
<configuration>
<system.web>
<compilation debug=”true” targetFramework=”4.0″/>
<httpRuntime executionTimeout=”3600″ maxRequestLength=”51200″ />
</system.web>
</configuration>
<!–maxRequestLength özelliği si limiti aşıp aşmadığını kontrol etmek için
executionTimeout si de kötü amaçlı kişileri engellemek için..
Örneğin çok güçlü bağlantıya sahip olan biri siteye
1 gb lık dosya gönderip sunucunun internet trafiğini
yavaşlatmak isteyebilir.
executionTimeout=”3600″ bu 1 saate denk gelir.. Sunucu 1 saatten sonra veri alımını iptal eder
maxRequestLength=”51200″ bu da KB cinsinden veri boyutudur. Bunu aştığında veri alımı iptal eder
Bu ayarlar dosya olsun olmasın tüm istekler için geçerlidir.
O yüzden burayı ayarlarken dikkatli olmalısınız–>

Hiç yorum yok :

Yorum Gönder