• 20140723 利用ASP.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 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"/>的值。




  • 相关阅读:
    FastDFS
    MYSQL日常操作
    SVN安装
    mysql主主配置
    MySQL优化
    nginx反向代理tomacat+keepalived实现动静分离、负载均衡、高可用
    nginx故障及处理
    nginx配置检测及安全配置
    nginx基本优化
    大金空调适配器
  • 原文地址:https://www.cnblogs.com/leon719/p/3862568.html
Copyright © 2020-2023  润新知