2014-07-23利用ASP.NET自带控件实现单文件上传与下载

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

效果图

上传文件页面:

下载文件页面:

1、母版页site.Master

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="upAndDown.SiteMaster" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head runat="server">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title></title>

<link href="~/Styles/Site.CSS" rel="stylesheet" type="text/css" />

<asp:ContentPlaceHolder ID="HeadContent" runat="server">

</asp:ContentPlaceHolder>

</head>

<body>

<form runat="server">

<div class="page">

<div class="header">

<div class="title">

<h1>

我的asp.net应用程序之-多文件上传+超大附件上传

</h1>

</div>

<div class="loginDisplay">

-by Leon</div>

<div class="clear hideSkiplink">

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu"

EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal"

>

<Items>

<asp:MenuItem NavigateUrl="~/Default.aspx" Text="上传"/>

<asp:MenuItem NavigateUrl="~/Download.aspx" Text="下载"/>

</Items>

</asp:Menu>

</div>

</div>

<div class="main">

<asp:ContentPlaceHolder ID="MainContent" runat="server"/>

</div>

<div class="clear">

</div>

</div>

<div class="footer">

</div>

</form>

</body>

</html>

2、Default.aspx 上传页面

<%@ Page Title="文件上传与下载" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"

CodeBehind="Default.aspx.cs" Inherits="upAndDown._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

<h2>

上传文件到服务器</h2>

<h2>

<asp:FileUpload ID="FileUpload1" runat="server" />

</h2>

<p>

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="上传" style="margin-left:170px;" />

</p>

</asp:Content>

3、Default.aspx.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

namespace upAndDown

{

public partial class _Default : System.Web.UI.Page

{

PRotected void Page_Load(object sender, EventArgs e)

{

}

public Boolean UpLoad(string path, FileUpload fileupload)

{

bool fileOK = false;

if(fileupload.HasFile)

{

string fileException = System.IO.Path.GetExtension(fileupload.FileName).ToLower();

//上传文件的格式

string[] allowedException = {".xls",".doc",".mp3",".rar",".zip",".vsd",".txt",".jpg",".gif",".bmp"

,".png",".swf",".avi",".mp3",".rm",".wma",".wmv",".exe"};

for (int i = 0; i < allowedException.Length;i++ )

{

if (fileException == allowedException[i])

fileOK = true; //返回成功标识

}

}

if (fileOK) //判断上传的文件是否在指定的格式范围之内

{

//判断文件是否存在,如不存在则创建路径

if (System.IO.Directory.Exists(path))

{

//该目录存在,则将上传的文件保存在该目录当中

}

else

{

System.IO.Directory.CreateDirectory(path); //创建文件路径

}

fileupload.SaveAs(path + "\\" + fileupload.FileName.Trim().Replace(" ","")); //去掉文件名字符空格,执行文件上传操作

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "name",

"<script>alert('文件上传成功!')</script>");

}

else

{

Page.ClientScript.RegisterClientScriptBlock(this.GetType(),

"alert('hehh')", "<script>alert('不支持此格式文件上传!')</script>");

}

return fileOK;

}

protected void Button1_Click(object sender, EventArgs e)

{

string FilePath = "";

//是否有上传文件

if (this.FileUpload1.FileName != null && this.FileUpload1.FileName != "")

{

if (FileUpload1.PostedFile.ContentLength <= 0)

{

Page.ClientScript.RegisterClientScriptBlock(this.GetType(),

"alert('hehh')",

"<script>alert('上传文件为空文件,请重新选择!')</script>");

return;

}

else

{

if (this.FileUpload1.HasFile)

{

if (FileUpload1.PostedFile.ContentLength > 524288000)

{

Page.ClientScript.RegisterClientScriptBlock(this.GetType(),

"scriptName", "<script>alert('上传文件过大!')</script>");

return;

}

else

{

FilePath = Server.MapPath("/Images"); //设置服务器路径

}

UpLoad(FilePath, this.FileUpload1);//调用UpLoad()函数上传文件

}

}

}

//如果上传文件错误,则返回操作

else

{

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "name",

"<script>alert('文件为空,请先选择要上传的文件!')</script>");

return;

}

}

}

}

4、Download.aspx 下载页面

<%@ Page Title="文件下载" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"

CodeBehind="Download.aspx.cs" Inherits="upAndDown.Download" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

<h2 style="font-size: xx-large">

从服务器上下载文件</h2>

<p>

<asp:ListBox ID="ListBox1" runat="server" Height="249px" Width="541px">

</asp:ListBox>

</p>

<embed style="filter: xray()" src="Images/GEM.mp3" width="188" height="68" type="audio/mp3"

loop="true" showstatusbar="true" autostart="true"/>

<p>

<asp:Button ID="Button1" runat="server" Font-Bold="True"

Font-Size="Small" Font-Strikeout="False" Text="下载"

onclick="Button1_Click" />

</p>

</asp:Content>

5、Download.aspx.cs

using System;

using System.IO;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

namespace upAndDown

{

public partial class Download : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

{

//页面加载时,获取下载文件的存放目录

string strfilepath = Server.MapPath("~/Images/");

//创建目录对象

DirectoryInfo dir = new DirectoryInfo(strfilepath);

//获得该目录下的所有文件

FileSystemInfo[] files = dir.GetFileSystemInfos();

//讲遍历的文件名称显示在ListBox控件中

ListItem items;

foreach (FileSystemInfo infofiles in files)

{

items = new ListItem(); //声明一个ListItem对象

items.Text = infofiles.Name;

items.Value = infofiles.FullName;

ListBox1.Items.Add(items); //向ListBox控件中添加数据信息

}

}

}

//<summary>

//文件下载函数

//</summary>

//author Leon

//<param name="fileURL">要下载文件所在的路径</param>

protected Boolean DownLoad(string fileURL)

{

Boolean Dok = false;

try

{

string FullPathURL = Server.MapPath(fileURL);//获取文件下载路径

System.IO.FileInfo file = new System.IO.FileInfo(FullPathURL);

if (file.Exists) //判断要下载的文件是否存在

{

Response.Clear(); //清空response对象中的内容

//*修改前的做法

Response.AddHeader("Content-Disposition", "attachment;filename=" + file.Name);

//*修改后的做法

Response.AddHeader("Content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(file.Name));

Response.AddHeader("Content-Length", file.Length.ToString());

Response.ContentType = "application/octet-stream";

Response.WriteFile(FullPathURL); //通过对Response对象执行下载文件的操作

Response.End(); //结束Response对象

Response.Flush(); //刷新Response对象

Response.Clear(); //清空response对象中的内容

Dok = true;

}

else

{

this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"success","<script>alert('

文件不存在!')</script>");

}

}

catch (Exception)

{

this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),

"success", "<script>alert('文件不存在!')</script>");

}

return Dok;

}

protected void Button1_Click(object sender, EventArgs e)

{

//获取下载文件的路径

string downfiles;

try

{

downfiles = "Images/" + ListBox1.SelectedItem.Text;

DownLoad(downfiles);

}

catch (Exception)

{

this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),

"success", "<script>alert('选择文件为空,请先选择要下载的文件!')</script>");

}

}

}

}

注:ASP.NET框架默认最大上传文件为4M,如果要修改框架默认最大上传文件大小, 需要到C:\Windows

\Microsoft.NET\Framework\v4.0.30319\Config文件夹中修改machine.config文件,

在<system.web> 标签中加入或修改<httpRuntime

maxRequestLength="4096000"/>的值。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航