學(xué)習(xí)Asp.net 是一個(gè)過程,很多是對牛腩的一個(gè)進(jìn)一步的理解,很多時(shí)候控件就是很好的練手工具。
FileUpload控件是一個(gè)很重要的控件,他被web服務(wù)器最終解釋成形如“<input type=“file”…/>”這樣普通的HTML控件
它有如下常用屬性:
FileUpload 控件是一個(gè)很重要的控件,它被 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 對象
這個(gè) HttpPostedFile 對象能幫我們做很多工作,它也有一些有用的常見屬性:
InputStream Stream 指向上傳文件的 Stream 對象
FileUpload 控件還有一個(gè) void SaveAs (string filename)的方法,這個(gè)方法用于將上注意:我們保存上傳文件的時(shí)候文件用的是物理路徑,但是要保存的,日后客戶端的訪問得到的卻是相對路徑或者URL地址。
- //例如:創(chuàng)建一個(gè)叫Upload.aspx的頁面
- <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Upload.aspx.cs" Inherits="Asp.Net基本控件原.Upload" %>
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>文件上傳的例子</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <asp:FileUpload ID="fileUpload" runat="server" />
- <asp:Button ID="btnUpload" runat="server" OnClick="btnUpload_Click" Text="上傳" />
- <asp:Literal ID="literal" runat="server"></asp:Literal>
- </div>
- </form>
- </body>
- </html>
- using System;
- using System.Data;
- using System.Configuration;
- using System.Collections;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.HtmlControls;
- namespace Asp.Net基本控件原
- {
- public partial class Upload : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- }
- protected void btnUpload_Click(object sender, EventArgs e)
- {
- //判斷是否上傳了文件
- if (fileUpload.HasFile)
- {
- //指定上傳文件在服務(wù)器上的保存路徑
- string savePath = Server.MapPath("~/upload/");
- //檢查服務(wù)器上是否存在這個(gè)物理路徑,如果不存在則創(chuàng)建
- if (!System.IO.Directory.Exists(savePath))
- {
- //需要注意的是,需要對這個(gè)物理路徑有足夠的權(quán)限,否則會(huì)報(bào)錯(cuò)
- //另外,這個(gè)路徑應(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);
- }
- }
- }
- }