前言 學(xué)習(xí)Asp.net 是一個過程,很多是對牛腩的一個進一步的理解,很多時候控件就是很好的練手工具。 正文FileUpload控件是一個很重要的控件,他被web服務(wù)器最終解釋成形如“<input type=“file”…/>”這樣普通的HTML控件 它有如下常用屬性: FileUpload 控件是一個很重要的控件,它被 Web 服務(wù)器最終解釋為形如“<input type=”file”…/>” 這樣的普通 HTML 控件。 它有如下常見屬性:
屬性名 數(shù)據(jù)類型 說明 FileBytes byte[] 上傳的文件內(nèi)容的字節(jié)數(shù)組表示形式 FileContent Stream 上傳文件的數(shù)據(jù)流 FileName string 上傳文件在客戶端的名字 HasFile bool 指示是否上傳了文件 PostedFile HttpPostedFile 獲取文件基礎(chǔ)的 HttpPostedFile 對象
這個 HttpPostedFile 對象能幫我們做很多工作,它也有一些有用的常見屬性: 屬性名 數(shù)據(jù)類型 說明 ContentLength int 上傳的文件內(nèi)容的字節(jié)長度 ContentType string 上傳文件的 MIME 內(nèi)容類型 FileName string 上傳文件的在客戶端的名字
InputStream Stream 指向上傳文件的 Stream 對象 FileUpload 控件還有一個 void SaveAs (string filename)的方法,這個方法用于將上 上傳文件保存到服務(wù)器上,一般來說,使用FileUpload控件上傳文件一般有如下幾個步驟: (1)利用HasFile屬性判斷是否上傳了文件。 (2)在服務(wù)器上指定一個物理路徑,并檢查這個物理路徑是否存在,如果不存在先創(chuàng)建 (3)指定上傳文件在服務(wù)器上的上傳路徑,利用Save()保存上傳的文件,這一步還可以做一些其它檢查工作,比如檢查上傳的文件是否符合要求或文件內(nèi)容大小是否符合要求 (4)將相對路徑或者URL地址保存起來,以便客戶訪問下載
注意:我們保存上傳文件的時候文件用的是物理路徑,但是要保存的,日后客戶端的訪問得到的卻是相對路徑或者URL地址。 實例//例如:創(chuàng)建一個叫Upload.aspx的頁面 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Upload.aspx.cs" Inherits="Asp.Net基本控件原.Upload" %> <html xmlns="http://www./1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <form id="form1" runat="server"> <asp:FileUpload ID="fileUpload" runat="server" /> <asp:Button ID="btnUpload" runat="server" OnClick="btnUpload_Click" Text="上傳" /> <asp:Literal ID="literal" runat="server"></asp:Literal>
using System.Configuration; using System.Collections; using System.Web.Security; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Upload : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) protected void btnUpload_Click(object sender, EventArgs e) string savePath = Server.MapPath("~/upload/"); //檢查服務(wù)器上是否存在這個物理路徑,如果不存在則創(chuàng)建 if (!System.IO.Directory.Exists(savePath)) //需要注意的是,需要對這個物理路徑有足夠的權(quán)限,否則會報錯 //另外,這個路徑應(yīng)該是在網(wǎng)站之下,而將網(wǎng)站部署在C盤卻把文件保存在D盤 System.IO.Directory.CreateDirectory(savePath); savePath=savePath+"\\"+fileUpload.FileName; fileUpload.SaveAs(savePath);//保存文件 //不過需要注意的是,在客戶端訪問卻需要指定的是URL地址,而不是服務(wù)器上的物理地址 literal.Text = string.Format("<a href='upload/{0}'>upload{0}</a>", fileUpload.FileName);
|