Üye Girişi Yapınız     


    E-Posta
    

    Şifreniz
    



Şifremi Unuttum


Ana Sayfa Site Hakkında İletişim Ziyaretçi Defteri Döküman İndir Makale Ekle Haber Ekle

     Asp ile dosya yükleme(File Upload) işlemi
     admin     18.02.2013     17:41:48

ASP.Net ile çok kolay bir şekilde gerçekleştireceğiniz bu işlemi klasik ASP ile gerçekleştirmek için öncesinde bir takım işlmeler gerçekleştirmeniz gerekiyor. ASP’de resim veya herhangi bir dosya uploadı için sunucumuzda veya local’de belli başlı bileşenlerin olması gerek. Bu bileşenlere birlikte bakalım.



Bileşen Nedir ?

Sisteminizi daha kullanılabilir ve geliştirilebilir yapmak için kullandığımız bir tür araç kutusu diyebilirim. Kullanabilmemiz için üsttte de dediğim gibi sunucumuz da yüklü olması gerekmektedir. Zaten yazı da kullanacağım bileşeni çoğu firma sunucusuna yüklüyor ve sizin local’iniz de rahatça kullanabilmeniz için full sürümü ile paylaşacağım.

 

ASPUpload Bileşeni & Tam Sürüm Nasıl Yapılır ?

ASPUpload, Persits Software’nin bizim için sunduğu herhangi bir bileşendir.  ASPUpload bileşeni ile yüklemek istediğimiz herhangi bir dosyayı browser üzerinden kolayca karşı tarafa aktarmak için kullanırız.

ASPUpload bileşenini buradan indirebilirsiniz.

Persits Sofware bize 30 günlük deneme süresi ile dosyayı indirmemize izin veriyor, daha doğrusu tam sürüm yapmak için bizden ürün anahtarı satın almamızı istiyor.

İlk olarak AspUpload.dll dosyasını bilgisayarınıza indirmeniz gerekiyor. indirmek için tıklayınız. 

İndirdikten sonra “Başlat > CMD” giriyoruz ve ardından şunları yazıyorsunuz; “net stop w3svc” (Bu komut ile local’i durduruyoruz.) İndirdiğimiz AspUpload.dll dosyasını ise ASPUpload bileşenini kurduğunuz dizine girerek (Genelde; C:\Program Files\Persits\ASPUpload) “Bin klasörü içine atıyor ve değişikliklerin onaylanmasını istiyoruz. Komut istemi ekranına tekrar dönüyor ve local’in başlatılmasını istiyoruz; “net start w3svc” (Bu komut ile local’i başlatıyoruz.)

Buraya kadar sorunsuz şekilde hallettiyseniz ilk aşamayı geçmiş bulunmaktasınız!

 

Genel Olarak Dosya Upload

En basit haliyle dosya upload olayı nasıl gerçekleştirilir ilk onunla başlıyalım. Her zaman ki gibi bir upload formu oluşturuyoruz.

{code type=HTML}
<form action=”upload.asp” method=”POST” enctype=”multipart/form-data”>
<input type=”file” name=”upload”><br>
<input type=”submit” value=”Upload”>
</form>
{/code}

‘Form’ etiketini oluştururken enctype tipini “multipart/form-data” değerini vererek bu formda bir dosya alışverişi olacağını belirtelim.  Ardından input’ın type değerini “file” yapıyoruz ki kullanıcı dosya seçebilsin. 

Şimdi ASP kısmına geçelim ve devam edelim.

{code type=ASP}
<%
Set Upload = Server.CreateObject(“Persits.Upload.1″)
Upload.Save Server.Mappath(“Dosya”)
For Each File in Upload.Files
Dosya = File.FileName
Next
response.write “Başarıyla yüklendi.”
%>
{/code}

Aslında ASP’de yazdığımız kodlar da gayet açık, basit ve net. Nasıl ki tabloya bağlanıyorsak, burada da bileşene bağlıyor bir isim atıyoruz; “Upload” adı altında. Alt satırda ise “.Save” metodunu kullanarak dosyanın nereye kayıt edileceğini yazıyoruz.(Upload sayfasının bulunduğu dizin altında ki “Dosya” klasörüne kaydetmesini belirtmişim.)

Döngüyü burada kullanmasakda olur şuan için fakat projenin geliştirilebilir olabilmesi için döngünün bize şöyle bir yararı var(Şuan için); gelen dosya adını ekrana yazdırabilir veya bu dosya adını kullanarak veritabanına kayıt edebiliriz.

Bu seviyede çoklu upload yapmak için değiştirmemiz gereken yer formun bulunduğu bölüm:

{code type=HTML}
   input type=”file” name=”upload” multiple=”multiple”
{/code}

Burada input’a “multiple” özelliğiniz kazandırarak, açılan pencerede birden çok seçim yapmasını sağlayabiliriz. ASP sayfamızda bunun için herhangi bir değişiklik yapmamıza gerek yok; sadece bu kısmı değiştirdiğiniz dosya isimlerini de çekebilirsiniz aynı zamanda upload işleminide başarıyla gerçekleştirirsiniz.

Şuan için dosya ismini ekrana yazdırmak için, döngüyü kaldırmadığınız sürece:

{code type=ASP}
<%
  response.write “Başarıyla yüklendi. ” & Dosya
%>
{/code}

Çoklu Dosya Yükleme

{code type=ASP}
<%
Set Upload = Server.CreateObject(“Persits.Upload.1″)
Upload.Save
Path = server.MapPath(“Dosya\”) ‘Bu klasöre kaydet.
Upload.CreateDirectory Path, True ‘Eğer klasör yoksa oluştur.
For Each File in Upload.Files ‘Döngüyü aç
set f = upload.files(“upload”)
if f.ext=”.html” or f.ext = “.aspx” or f.ext = “.asp” or f.ext = “.php” or f.ext = “.exe” then ‘Format kontrol
response.write “İstenmeyen dosya türü: ” & f.ext
else
Randomize
Rast1 = int(RND*10)+0
Rast2 = int(RND*100)+0
Rast3 = int(RND*1000)+0
Rast4 = int(RND*10000)+0
Rast5 = int(RND*100000)+0
Rast6 = int(RND*1000000)+0
RAST = Rast1 & “_” & Rast2 & “_” & Rast3 & “_” & Rast4 & “_” & Rast5 & “_” & Rast6
File.SaveAs Path & “\” & “KA_” & RAST & f.ext ‘Kaydı gerçekleştir.
Response.Write “File saved as ” & File.Path & “<BR>” ‘Ekrana yazdır.
end if
Next ‘Döngü bitir
%>
{/code}

İlk satırda herzaman ki gibi bileşenimizi tanımlıyoruz. İkinci satırda bileşene dosyayı kaydetceğimizi söylüyoruz ama henüz neyin, ne olduğunu değil.

“Path” adında bir değişken atıyarak, upload yaptırdığımız ASP sayfasının bulunduğu dizininde ki “Dosya” klasörüne input’dan gelen dosyaları yüklemesini istiyoruz. Eğer böyle bir klasör daha önce sunucuda oluşturulmamışsa “.CreateDirectory Path, True” metodunu ‘True’ yaparak, “Path” değişkeninde kullandığımız yol ile aynısını olmasını istiyoruz.

Gelen dosya sayısı kadar döngüye girmesini istiyor ve ‘For Each’ döngüsünü başlatıyorum. Hemen ardından bir obje tanımlayarak, input’tan gelen dosyaları kontrol etmesini istiyorum;

set f = upload.files(“upload”)

Normal, bildiğimiz ‘if’ ile Persits.Upload’ın “.ext” metodunu kullanarak gelen dosyaların uzantılarını kontrol edelim.

{code type=ASP}
<%
if f.ext=”.EXE” then
  response.write “Bu dosya uzantısına izin verilmiyor. Uzantı: ” & f.ext
end if
%>
{/code}

Üstte ki verdiğim örnekte ki gibi bu şekilde keyfinize göre çoğaltarak dosya formatlarına kısıtlama getirebilirsiniz. Bu sayede güvenlik seviyesi artmış olur hem. :)

Diğer satırlar: Eğer dosya türü bizim istemediklerimiz dışında ise işin ‘ELSE’ tarafına gitmesini istiyor ve orada “Randomize” olayını kullanarak sistemin kendi kendine sayılar üretmesini istiyorum. Burası tamamen sizin isteğinize kalmış bir şey. Ayrıca rastgale sayılar üreterek dosyaların biribiriyle çakışmasını da önlemiş oluyoruz.

Ürettiğim bu onarlık, yüzerlik, binerlik… sayıları tek bir değişken de birleştirerek bize ileride büyük bir kolaylık sağlıyacağınıda unutmayalım.

File.Saveas” ile dosyanın tam anlamıyla istediğimiz şekilde belirtilen dizin, klasör, isim ve format ile kayıt olmasını sağlıyoruz. Ora da belirttiğim gibi “Path, RAST, f.ext” değişkenleri veya metotlarından herhangi biri eksik olursa o şekilde işlem yapılır ve burası da tamamen sizin gizli ve fantastik duygularınıza bırakılmıştır. :)

En sonunda ‘if’ olayını kapatıyor ve döngünün duruma göre ‘Next’ devam etmesini söylüyoruz ki bu multi-upload’da olmazsa olmazımızdır.  Veritabanına kayıt olayı ise yine ‘ELSE’ işleminden sonra ve döngünün içinde yaptığınıza emin olarakdan gerçekleştirebilirsiniz. Bildiğimiz “.AddNew” olayını kullanarak tabloya “INSERT” ettireceksiniz o kadar... (emrecoban.com.tr adresinden alıntı yapılmıştır.)

 

 

Facebook'ta Paylaş    
Diğer ASP İçerikleri       Tüm Yazılar        Ana Sayfa


  =>Soru Sorun veya Yorum Yazın...

İsim Giriniz :
  

  =>Yapılan Yorumlar...

Serkan    25.11.2016    17:17:05

seni yaradana kurban olurum. Müthiş bir iş çıkarttın. Heryerde bu dll yi arıyordum. AspJpeg dll varsa onuda paylaşırmısın. Mail adresim serkan_sahin.06@hotmail.com


admin    27.11.2016    23:24:19

Serkan kardeş, AspJpeg dll yok bende. Ama internete mutlaka vardır. Bazı siteler paylaşıyor ama indirmek için üyelik istiyor. Üye olup indirebilirsin.