效果图

上传文件页面:

下载文件页面:
 

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"/>的值。

2014-07-23 利用ASP.NET自带控件实现单文件上传与下载的更多相关文章

  1. asp.net web常用控件FileUpload(文件上传控件)

    FileUpload控件的主要中能:向指定目录上传文件,该控件包括一个文本框和一个浏览按钮. 常用的属性:FileBytes,FileContent.FileName.HasFile.PostedFi ...

  2. Asp.net core 学习笔记 ( upload/download files 文件上传与下载 )

    更新 :  2018-01-22  之前漏掉了一个 image 优化, 就是 progressive jpg refer : http://techslides.com/demos/progressi ...

  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统(56)-插件---单文件上传与easyui使用fancybox

    系列目录 https://yunpan.cn/cZVeSJ33XSHKZ  访问密码 0fc2 今天整合lightbox插件Fancybox1.3.4,发现1.3.4版本太老了.而目前easyui 1 ...

  4. ASP.NET 文件上传于下载

    本文主要介绍一下,在APS.NET中文件的简单上传于下载,上传是将文件上传到服务器的指定目录下,下载是从存入数据库中的路径,从服务器上下载. 1.上传文件 (1)页面代码 <table alig ...

  5. [转载]ASP.NET Core文件上传与下载(多种上传方式)

    ASP.NET Core文件上传与下载(多种上传方式)   前言 前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了. 打算写个系列,但是还没想好目录,今天先来一篇,后面在 ...

  6. ASP.NET文件上传和下载

    大学最近作出相关的需求进行上传和下载文件的网站(求为:站点发布的通知,在后台要能给每一个通知加入附件.在前台要能显示并下载附件),之前仅仅是学习过关于上传的 理论知识,这里实践了一下下,与大家分享一下 ...

  7. ASP.NET Core文件上传与下载(多种上传方式)

    前言 前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了. 打算写个系列,但是还没想好目录,今天先来一篇,后面在整理吧. ASP.NET Core 2.0 发展到现在,已经 ...

  8. 040. asp.netWeb中TreeView控件绑定XML文件

    xml文件格式: <?xml version="1.0" encoding="utf-8" ?> <sitemap title="进 ...

  9. asp.net.mvc 的单文件上传和多文件上传的简单例子

    首先打开vs2012,创建空的mvc4项目,名称为MVCStudy,选择基本模板

随机推荐

  1. C语言入门(4)——常量、变量与赋值

    对于基本数据类型量,按其取值是否可改变又分为常量和变量两种.在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量.它们可与数据类型结合起来分类. 常量 常量有字符常量(Character ...

  2. 【和我一起学习Unity3D】Unity3D的坐标控制

    坐标这个东西,在Unity3D里面是分为几个类的,各自是Vector2,Vector3.Vector4:含义各自是:二维坐标系,三维坐标系,四维坐标系.一般做游戏呢,用到的最多的就是Vector3了. ...

  3. 分布式ElasticSearch简单介绍

    这里我们解释一些通用的术语,比如集群(cluster).节点(node)和分片(shard).Elasticsearch的扩展机制,以及它怎样处理硬件故障.在此将探索怎样创建你的集群(cluster) ...

  4. DataTable转换实体类

    using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data. ...

  5. eclipse使用技巧---使用正则表达式查找替换

    1,Eclipse ctrl+f 打开查找框2,选中 Regular expressions (正则表达式) 去掉/* */(eclipse)        /\*(.|[\r\n])*?\*/去掉/ ...

  6. asp.net textbox keyup事件触发后台的textchange事件

    textbox文本框text_change事件,失去焦点才会执行. 通过keyup事件,js控制失去焦点. <asp:TextBox runat="server" ID=&q ...

  7. PL/SQL编程要点和注意点

    http://www.itpub.net/thread-1560427-3-1.html 1. 非关键字小写,关键字大写,用下划线分隔,用前缀区分变量与表列名.不强求变量初始值.2. 永远只捕获可预测 ...

  8. 红豆带你从零学C#系列之:使用集合组织相关数据

    ArrayList(数组列表) Why:如果一个公司有5名员工,一般我们会用长度为5的对象数组来存储信息,但要是有新员工来了,5个长度的数组就不够用了,因此我们需要一种能够根据需要自动分配容量的动态数 ...

  9. java——多线程——单例模式的static方法和非static方法是否是线程安全的?

    单例模式的static方法和非static方法是否是线程安全的? 答案是:单例模式的static方法和非static方法是否是线程安全的,与单例模式无关.也就说,如果static方法或者非static ...

  10. jaspersoft 5.6.0 相关问题

    <property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true" ...