2014-07-23 利用ASP.NET自带控件实现单文件上传与下载_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 2014-07-23 利用ASP.NET自带控件实现单文件上传与下载

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

 2014/7/23 11:40:21  Leon719  程序员俱乐部  我要评论(0)
  • 摘要:效果图上传文件页面:下载文件页面:1、母版页site.Master<%@MasterLanguage="C#"AutoEventWireup="true"CodeBehind="Site.master.cs"Inherits="upAndDown.SiteMaster"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict
  • 标签:.net ASP.NET 实现 上传 文件 net 下载 利用 控件
效果图

上传文件页面:




下载文件页面:
 




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"> <html xmlns="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 姚量</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"/>的值。




发表评论
用户名: 匿名