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ı.

fileupload1 fileupload2RegularExpressionValidator 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.

.filebytes Gönderilen dosyanın içeriğini byte cinsinden getirir
.filecontent Gönderilen dosyayı stream cinsinden alır
.filename dosyam.uzanti şeklinde dosya adını döndürür
.postedfile HttpPostedFile classını çağırır
.saveas c:\klasor\dosyaadi.uzanti şeklinde verdiğimizde o konuma kaydeder

postedfile sınıfı ve alt yordamları;

.contentlength Dosyanın boyutunu byte olarak döndürür(örnekte dosya boyutunu daha şık göstermenize yardımcı olabilecek bir fonksiyon mevcut)
.contenttype Dosyanın türünü döndürür jpeg için image/pjpeg olabilmektedir örneğin.
.filename Dosyanın kullanıcı bilgisayarındaki yolunu gösterir. e:\klasorum\dosya.jpg gibi
.inputstream Dosyanın içeriğini stream olarak gönderir. Üstteki Fileupload kontrolünün filecontentiyle aynıdır
.saveas Dosyayı 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–>

Reklamlar