İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

C#.Net ile Bir File Upload Örneği

Bu örnekte bir kullanıcı web üzerinden servera bir dosya göndermektedir. Örnek File Upload denilen bu olayın C#.Net ile nasıl yapıldığını göstermetedir.

Örnekte bir fileUpload.aspc bulunmaktadır. Bu aspx'te bir file input elemnti bulunmaktadır. Gönder düğmesi tıklandığında kullanıcının seçmiş olduğu dosya server'a gönderilir. Gönderilen dosyalar server'da Dosyalar klasörünün içine koyulur.

FileUpload.aspxİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <%@ Page language="c#" Codebehind="FileUpload.aspx.cs" AutoEventWireup="false" Inherits="Test.FileUpload" %>
  2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  3 <HTML>
  4   <HEAD>
  5     <title>Fle Upload Testi</title>
  6     <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  7     <meta name="CODE_LANGUAGE" Content="C#">
  8     <meta name="vs_defaultClientScript" content="JavaScript">
  9     <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
 10   </HEAD>
 11   <body MS_POSITIONING="GridLayout">
 12     <form id="Form1" method="post" runat="server">
 13       <input type="file" id="fileInput" runat="server">
 14       <br>
 15       <asp:Button ID="btnGonder" Text="Gönder" Runat="server"></asp:Button>
 16       <br>
 17       <asp:Label ID="lblBilgi" Runat="server"></asp:Label>
 18     </form>
 19   </body>
 20 </HTML>
FileUploadAspx.csİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 using System;
  2 using System.Collections;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Web;
  7 using System.Web.SessionState;
  8 using System.Web.UI;
  9 using System.Web.UI.WebControls;
 10 using System.Web.UI.HtmlControls;
 11 using System.IO;
 12 namespace Test
 13 {
 14   public class FileUpload : System.Web.UI.Page
 15   {
 16     protected System.Web.UI.WebControls.Button btnGonder;
 17     protected System.Web.UI.WebControls.Label lblBilgi;
 18     protected System.Web.UI.HtmlControls.HtmlInputFile fileInput;
 19     private void Page_Load(object sender, System.EventArgs e){}
 20     
 21     #region Web Form Designer generated code
 22     override protected void OnInit(EventArgs e)
 23     {
 24       InitializeComponent();
 25       base.OnInit(e);
 26     }
 27   
 28     private void InitializeComponent()
 29     {    
 30       this.btnGonder.Click += new System.EventHandler(this.btnGonder_Click);
 31       this.Load += new System.EventHandler(this.Page_Load);
 32     }
 33     #endregion
 34     private void btnGonder_Click(object sender, System.EventArgs e)
 35     {
 36       HttpPostedFile postedFile=fileInput.PostedFile;
 37       if(postedFile!=null&&postedFile.ContentLength>0){
 38         string serverPath=Server.MapPath(".");        
 39         string filePath=postedFile.FileName;
 40         FileInfo clientFileInfo=new FileInfo(filePath);
 41         string filename=clientFileInfo.Name;
 42         string yeniPath=serverPath+"\\Dosyalar\\"+filename;
 43         postedFile.SaveAs(yeniPath);
 44         FileInfo serverFileInfo = new FileInfo(yeniPath);
 45         FileStream stream = new FileStream(serverFileInfo.FullName, FileMode.Open, FileAccess.Read);
 46         byte[] buffer = new byte[stream.Length];
 47         stream.Read(buffer,0,(int)stream.Length);
 48         stream.Close();
 49         lblBilgi.Text="Doysa upload edildi";
 50       } 
 51     }
 52   }
 53 }

Düğmeye tıklandığı zaman fileIInput nesnesinden HttpPostedFile nesnesi istenir. Bu nesne server'a gönderilecek dosyanın bilgisini tutar. Eğer kullanıcı bir dosya girmişse işlem yapılması için bir kontrol yapılır.

string serverPath=Server.MapPath(".");  

ile FileUpload.aspx dosyasının server'daki path'i alınır. Örneğin C:\Inetpub\wwwroot\Test şeklinde bir path olabilir.

string filePath=postedFile.FileName;
FileInfo clientFileInfo=new FileInfo(filePath);
string filename=clientFileInfo.Name;

ile gönderilmek istenen dosyanın adı bulunur. postedFile.FileName bize path'i verir. C:\ali\deneme.txt gibi. Ama bize sadece deneme.txt gerekmektedir. Bunun için Filenfo nesnesi yaratıp bu nesneden dosya adını alıyoruz.

string yeniPath=serverPath+"\\Dosyalar\\"+filename;
postedFile.SaveAs(yeniPath);

ile kullanıcının girilen doysası server'da kayıt edilir. Ancak henüz data server'a gönderilmemiştir. Sadece server'da bir dosya yaratılır.

FileInfo serverFileInfo = new FileInfo(yeniPath);
FileStream stream = new FileStream(serverFileInfo.FullName, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[stream.Length];
stream.Read(buffer,0,(int)stream.Length);
stream.Close();

ile dosya içeriği server'daki dosyaya yazılır.

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır