Asp.net FileUpload控件

前言

    学习Asp.net 是一个过程,很多是对牛腩的一个进一步的理解,很多时候控件就是很好的练手工具。

正文

FileUpload控件是一个很重要的控件,他被web服务器最终解释成形如“<input type=“file”…/>”这样普通的HTML控件
它有如下常用属性:
FileUpload 控件是一个很重要的控件,它被 Web 服务器最终解释为形如“<input
type=”file”…/>” 这样的普通 HTML 控件。
它有如下常见属性:


属性名       数据类型                  说明
FileBytes         byte[]                  上传的文件内容的字节数组表示形式
FileContent Stream                  上传文件的数据流
FileName string                  上传文件在客户端的名字
HasFile         bool                   指示是否上传了文件
PostedFile HttpPostedFile   获取文件基础的 HttpPostedFile 对象


这个 HttpPostedFile 对象能帮我们做很多工作,它也有一些有用的常见属性


属性名                 数据类型                 说明
ContentLength int                         上传的文件内容的字节长度
ContentType         string                 上传文件的 MIME 内容类型
FileName         string                 上传文件的在客户端的名字

InputStream         Stream                  指向上传文件的 Stream 对象


FileUpload 控件还有一个 void SaveAs (string filename)的方法,这个方法用于将上 
上传文件保存到服务器上,一般来说,使用FileUpload控件上传文件一般有如下几个步骤:
(1)利用HasFile属性判断是否上传了文件。
(2)在服务器上指定一个物理路径,并检查这个物理路径是否存在,如果不存在先创建
(3)指定上传文件在服务器上的上传路径,利用Save()保存上传的文件,这一步还可以做一些其它检查工作,比如检查上传的文件是否符合要求或文件内容大小是否符合要求
(4)将相对路径或者URL地址保存起来,以便客户访问下载

注意:我们保存上传文件的时候文件用的是物理路径,但是要保存的,日后客户端的访问得到的却是相对路径或者URL地址。

实例

//例如:创建一个叫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)
            {
                //指定上传文件在服务器上的保存路径
                string savePath = Server.MapPath("~/upload/");
                //检查服务器上是否存在这个物理路径,如果不存在则创建
                if (!System.IO.Directory.Exists(savePath))
                {
                    //需要注意的是,需要对这个物理路径有足够的权限,否则会报错
                    //另外,这个路径应该是在网站之下,而将网站部署在C盘却把文件保存在D盘
                    System.IO.Directory.CreateDirectory(savePath);
                }
                savePath=savePath+"\\"+fileUpload.FileName;
                fileUpload.SaveAs(savePath);//保存文件
                //不过需要注意的是,在客户端访问却需要指定的是URL地址,而不是服务器上的物理地址
                literal.Text = string.Format("<a href='upload/{0}'>upload{0}</a>", fileUpload.FileName);
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/lxl51666/article/details/79765318