Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Mustafa Erhan Ersoy
Mustafa Erhan Ersoy
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
14 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: dosyayi dropdown filesize islemini kaynak kullanarak kullanici kullanicilarin public sinifi sunucuya textbox transfer verilen windows ASP.NET Mustafa Erhan Ersoy
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : ASP.NET
Yayınlanma Tarihi : 13.1.2005
Okunma Sayısı : 26833
Yorum Sayısı : 1     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 19.4.2024
Turhal Temizer
Mac OS/X Removing CUDA 19.4.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 19.4.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 19.4.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
HtmlInputFile Kontrolü İle Sunucuya Dosya Yüklemek
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Web uygulamalarında, kullanıcıların sunucuya textbox, dropdown gibi kontrollerle bilgi gönderme ihtiyacı web programcılığını doğmasının sebebidir. Fakat bazı durumlarda bu text tabanlı bilgi yetersiz kalır ve sunucuya dosya transfer etmemiz gerektiği durumlar doğar. Mesela kullanıcı profilinin oluşturulduğu bir uygulamada kullanıcı fotoğrafının sunucuya transfer edilip saklanması, veya üyelerinin gönderdiği kaynak kodları yayınlayan bir programlama sitesinde kaynak kodların sunucuya gönderilip saklanmasını örnek olarak verebiliriz. Dosya transferini sağlamak için input HTML tagini kullanırız.



<INPUT type="file" id="fuResim">
HtmlInputFile kontrolümüzü sayfamıza ekledikten sonra runat özelliğine server değerini vererek kontrolümüzü web sunucu kontrolü haline getiririz. Aşağıda public üyelerini kısaca anlattığım basit sınıfı kullanarak sunucuya dosya transfer işlemini kolaylıkla yaparız.

FileUploadHelper Sınıfı Public Üyeleri
Üye Açıklama
MaxUploadSize Özelliği Byte olarak, gönderilebilecek en büyük dosya boyutu.
ContentTypes Kolleksiyonu Gönderilebilecek dosya tipleri
UploadFile Metodu Gerekli kontroleri (dosya büyüklüğü, dosya içeriği gibi) yapıp, dosyayı sunucuya gönderen metod.

Dosya transfer işlemini yapan yardımcı sınıfımız :

using System.Collections;

namespace FileUpload
{
public class FileUploadHelper
{

public FileUploadHelper(string uploadPath, System.Web.UI.HtmlControls.HtmlInputFile htmlInputFileControl)
{
this._uploadPath = uploadPath;
this._htmlInputFileControl = htmlInputFileControl;
this._maxSize = int.MaxValue;
}

private string _uploadPath;
private System.Web.UI.HtmlControls.HtmlInputFile _htmlInputFileControl;
private int _maxSize;

private bool isFileValid()
{
int fileSize = _htmlInputFileControl.PostedFile.ContentLength;
string contentType = this._htmlInputFileControl.PostedFile.ContentType;

if(fileSize > this._maxSize || fileSize == 0) // dosya büyüklüğünü komtrol et
return false;
else if (this.ContentTypes.Count > 0)
{
// Dosya içeriğini kontrol et :
if(this.ContentTypes.Contains(contentType))
return true;
else
return false;
}
else
return true;
}

public int MaxUploadSize
{
set
{
if (value > 0)
_maxSize = value;
else
_maxSize = 0;
}

get { return this._maxSize; }
}

public ArrayList ContentTypes = new ArrayList();

public bool UploadFile()
{
if(this.isFileValid())
{
// Dosyayı verilen yere transfer et :
this._htmlInputFileControl.PostedFile.SaveAs(this._uploadPath);
return true;
}
else
{
return false;
}
}
}
}
Dosya transfer sınıfımızı aşağıdaki gibi kullanarak dosya transfer işlemimizi yaparız :

protected System.Web.UI.HtmlControls.HtmlInputFile fuResim;

string fileName = fuResim.PostedFile.FileName.Substring(fuResim.PostedFile.FileName.LastIndexOf(’\\’));
string uploadPath = Server.MapPath("resimler") + "/" + fileName;
FileUploadHelper fuHelper = new FileUploadHelper(uploadPath, fuResim);

// Resim dosyaları :
fuHelper.ContentTypes.Add("image/pjpeg");
fuHelper.ContentTypes.Add("image/jpeg");
fuHelper.ContentTypes.Add("image/gif");

// Maksimum dosya boyutu 1MB :
int maxUpload = 1024 * 1024;
fuHelper.MaxUploadSize = maxUpload;

bool isUploaded = fuHelper.UploadFile();
Uygulamada verilen örneğin kaynak kodlarına ulaşmak için tıklayın...

NOT :Dosya transferi örneğini denerken özellikle Windows XP (SP 2) ve Windows 2003 Sarver işletim sistemlerinde "Access denied - Erişim reddedildi" hatası alabilirsiniz.
Web.config dosyanıza <identity impersonate="true" /> eklemeniz ASP.NET prosesinin, sizin kullanıcı haklarınızla çalışamsını sağlayacaktır ve problemi çözecektir.

EKLEME :
Sık kullanılan dosya tipleri için kullanılabilecek ContentType’lar :
Zip için : application/x-zip-compressed
Rar için : application/octet-stream

Exe için : application/octet-stream
Msi için : application/octet-stream

text için : text/plain
word için : application/msword
excel için : application/vnd.ms-excel

pdf için : application/pdf

Makale:
HtmlInputFile Kontrolü İle Sunucuya Dosya Yüklemek ASP.NET Mustafa Erhan Ersoy
  • Yazılan Yorumlar
  • Yorum Yaz
ŞUB
8
2006
Merhaba, Makale çok açık ve adım adım anlatılmış. Çok Teşekkürler...
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor