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.
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 publicclass 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 privatevoid Page_Load(object sender, System.EventArgs e){} 20 21 #region Web Form Designer generated code
22 override protectedvoid OnInit(EventArgs e) 23 { 24 InitializeComponent();
25 base.OnInit(e);
26 } 27 28 privatevoid 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 privatevoid 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 = newbyte[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.
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.