利用asp.net进行文件上传和下载时非常常用的功能,现做整理,将源码上传,提供给初学者参考,以下代码中的样式文件就不上传了,下载者请将样式去掉。

效果图如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FileUploadManager.aspx.cs"Inherits="NewsManagement_FileUploadManager" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title>文件上传管理</title><link href="../themes/common.css" rel="stylesheet" type="text/css" /><link href="../themes/reset.css" rel="stylesheet" type="text/css" /><link href="../themes/modules.css" rel="stylesheet" type="text/css" /><link href="../themes/fix.css" rel="stylesheet" type="text/css" />
</head>
<body><form id="form1" runat="server"><div class="right"><table cellpadding="1" cellspacing="1" class="tablesingle" width="100%" style=" height:500px;"><tr><td colspan="3"><asp:Label ID="lab_FolderInfo" runat="server" Font-Size="Medium"></asp:Label></td></tr><tr><td class="tablesingletdlable"  valign="top" align="center">允许上传文件的类型:<asp:BulletedList ID="bl_FileTypeLimit" runat="server"></asp:BulletedList>允许上传单个文件的大小:<asp:Label ID="lab_FileSizeLimit" runat="server" Text=""></asp:Label></td><td class="tablesingletdlable" align="left"><asp:FileUpload ID="FileUpload" runat="server" Width="300px" /><br /><br /><asp:Button ID="btn_Upload" runat="server" CssClass="button-add-new" Style="height: 26px;width: 64px; border: 0px;" Text="上传文件" OnClick="btn_Upload_Click" /></td><td class="tablesingletdlable"><table cellpadding="1" cellspacing="1" class="tablesingle" width="100%"><tr><td><!--启用了AutoPostBack--><asp:ListBox ID="lb_FileList" runat="server" AutoPostBack="True" Width="300px" Height="400px"OnSelectedIndexChanged="lb_FileList_SelectedIndexChanged"></asp:ListBox></td><td valign="top"><asp:Label ID="lab_FileDescription" runat="server" Text=""></asp:Label></td></tr><tr><td colspan="2"><asp:Button ID="btn_Download" runat="server" CssClass="button-add-new" Style="height: 26px;width: 64px; border: 0px;" Text="下载文件" OnClick="btn_Download_Click" /> <!--在删除前给予确认--><asp:Button ID="btn_Delete" runat="server" CssClass="button-add-new" Style="height: 26px;width: 64px; border: 0px;" Text="删除文件" OnClientClick="return confirm('确定删除文件吗?')"OnClick="btn_Delete_Click" /><br /><asp:TextBox ID="tb_FileNewName" runat="server" Width="300px"></asp:TextBox> <asp:Button ID="btn_Rename" runat="server" CssClass="button-4" Style="height: 26px;width: 110px; border: 0px;" Text="对文件重命名" OnClick="btn_Rename_Click" /> </td></tr></table></td></tr></table></div></form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls.WebParts;
using System.IO;
using System.Configuration;
using SYIT.Tools.DotNetUI;public partial class NewsManagement_FileUploadManager : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){//防止PostBack后列表信息重复添加if (!IsPostBack){//初始化文件夹信息InitFolderInfo();//初始化上传限制信息InitUploadLimit();//初始化文件列表InitFileList();}}protected void btn_Upload_Click(object sender, EventArgs e){//判断用户是否选择了文件if (FileUpload.HasFile){//调用自定义方法判断文件类型是否符合要求if (IsAllowableFileType()){//调用自定义方法判断文件大小是否符合要求if (IsAllowableFileSize()){//从config中读取文件上传路径string strFileUploadPath = ConfigurationManager.AppSettings["FileUploadPath"].ToString();//从UploadFile中读取文件名string strFileName = FileUpload.FileName;//组合成物理路径string strFilePhysicalPath = Server.MapPath(strFileUploadPath + strFileName);//保存文件FileUpload.SaveAs(strFilePhysicalPath);//更新文件列表框控件lb_FileList.Items.Add(strFileName);//更新文件夹信息InitFolderInfo();//调用自定义方法显示提示ShowMsgHelper.AlertMsg2("文件成功上传!");//ShowMessageBox("文件成功上传");}else{//调用自定义方法显示提示ShowMessageBox("文件大小不符合要求,请参看上传限制");}}else{//调用自定义方法显示提示ShowMessageBox("文件类型不符合要求,请参看上传限制");}}else{//调用自定义方法显示提示ShowMessageBox("请选择一个文件");}}protected void btn_Download_Click(object sender, EventArgs e){//从config中读取文件上传路径string strFileUploadPath = ConfigurationManager.AppSettings["FileUploadPath"].ToString();//从列表框控件中读取选择的文件名string strFileName = lb_FileList.SelectedValue;//组合成物理路径string strFilePhysicalPath = Server.MapPath(strFileUploadPath + strFileName);//清空输出流Response.Clear();//在HTTP头中加入文件名信息Response.AddHeader("Content-Disposition", "attachment;FileName=" + HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8));//定义输出流MIME类型为Response.ContentType = "application/octet-stream";//从磁盘读取文件流System.IO.FileStream fs = System.IO.File.OpenRead(strFilePhysicalPath);//定义缓冲区大小byte[] buffer = new byte[102400];//第一次读取int i = fs.Read(buffer, 0, buffer.Length);//如果读取的字节大于0,则使用BinaryWrite()不断向客户端输出文件流while (i > 0){Response.BinaryWrite(buffer);i = fs.Read(buffer, 0, buffer.Length);}//关闭磁盘文件流fs.Close();//关闭输出流Response.End();}protected void btn_Delete_Click(object sender, EventArgs e){//从config中读取文件上传路径string strFileUploadPath = ConfigurationManager.AppSettings["FileUploadPath"].ToString();//从列表框控件中读取选择的文件名string strFileName = lb_FileList.SelectedValue;//组合成物理路径string strFilePhysicalPath = Server.MapPath(strFileUploadPath + strFileName);//删除文件System.IO.File.Delete(strFilePhysicalPath);//更新文件列表框控件lb_FileList.Items.Remove(lb_FileList.Items.FindByText(strFileName));//更新文件夹信息InitFolderInfo();//更新文件描述信息tb_FileNewName.Text = "";//更新重命名文本框lab_FileDescription.Text = "";//调用自定义方法显示提示ShowMessageBox("文件成功删除");}protected void btn_Rename_Click(object sender, EventArgs e){//从config中读取文件上传路径string strFileUploadPath = ConfigurationManager.AppSettings["FileUploadPath"].ToString();//从列表框控件中读取选择的文件名string strFileName = lb_FileList.SelectedValue;//从重命名文本框中读取新文件名string strFileNewName = tb_FileNewName.Text;//组合成物理路径string strFilePhysicalPath = Server.MapPath(strFileUploadPath + strFileName);//组合成物理路径string strFileNewPhysicalPath = Server.MapPath(strFileUploadPath + strFileNewName);//文件重命名System.IO.File.Move(strFilePhysicalPath, strFileNewPhysicalPath);//找到文件列表框控件中的匹配项ListItem li = lb_FileList.Items.FindByText(strFileName);//修改文字li.Text = strFileNewName;//修改值li.Value = strFileNewName;//调用自定义方法显示提示ShowMessageBox("文件成功重命名");}protected void lb_FileList_SelectedIndexChanged(object sender, EventArgs e){//从config中读取文件上传路径string strFileUploadPath = ConfigurationManager.AppSettings["FileUploadPath"].ToString();//从列表框控件中读取选择的文件名string strFileName = lb_FileList.SelectedValue;//组合成物理路径string strFilePhysicalPath = Server.MapPath(strFileUploadPath + strFileName);//根据物理路径实例化文件信息类FileInfo fi = new FileInfo(strFilePhysicalPath);//获得文件大小和创建时间并赋值给标签lab_FileDescription.Text = string.Format("文件大小:{0} 字节<br><br>上传时间:{1}<br>", fi.Length, fi.CreationTime);//把文件名赋值给重命名文本框tb_FileNewName.Text = strFileName;}private void InitFolderInfo(){//从config中读取文件上传路径string strFileUploadPath = ConfigurationManager.AppSettings["FileUploadPath"].ToString();//判断上传文件夹是否存在if (!Directory.Exists(Server.MapPath(strFileUploadPath)))Directory.CreateDirectory(Server.MapPath(strFileUploadPath));//组合成物理路径string strFilePath = Server.MapPath(strFileUploadPath);//从config中读取文件夹容量限制double iFolderSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FolderSizeLimit"]);//声明表示文件夹已用空间的变量并赋初始值double iFolderCurrentSize = 0;//获取文件夹中所有文件FileInfo[] arrFiles = new DirectoryInfo(strFilePath).GetFiles();//累加文件大小获得已用空间值foreach (FileInfo fi in arrFiles)iFolderCurrentSize += Convert.ToInt32(fi.Length / 1024);//把文件夹容量和已用空间信息赋值给标签lab_FolderInfo.Text = string.Format("文件夹容量限制:{0} M 已用空间:{1:f2} M", iFolderSizeLimit / 1024, iFolderCurrentSize / 1024);}private void InitUploadLimit(){//从config中读取上传文件类型限制并根据逗号分割成字符串数组string[] arrFileTypeLimit = ConfigurationManager.AppSettings["FileTypeLimit"].ToString().Split(',');//从config中读取上传文件大小限制double iFileSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FileSizeLimit"]);//遍历字符串数组把所有项加入项目编号控件for (int i = 0; i < arrFileTypeLimit.Length; i++)bl_FileTypeLimit.Items.Add(arrFileTypeLimit[i].ToString());//把文件大小限制赋值给标签lab_FileSizeLimit.Text = string.Format("{0:f2} M", iFileSizeLimit / 1024);}private void InitFileList(){//从config中读取文件上传路径string strFileUploadPath = ConfigurationManager.AppSettings["FileUploadPath"].ToString();//组合成物理路径string strFilePath = Server.MapPath(strFileUploadPath);//读取文件夹下所有文件FileInfo[] arrFiles = new DirectoryInfo(strFilePath).GetFiles();//把文件名逐一添加到列表框控件控件foreach (FileInfo fi in arrFiles)lb_FileList.Items.Add(fi.Name);}private bool IsAllowableFileSize(){//从config中读取上传文件大小限制double iFileSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FileSizeLimit"]) * 1024;//文件大小是否超出了大小限制?if (iFileSizeLimit > FileUpload.PostedFile.ContentLength)return true;elsereturn false;}private bool IsAllowableFileType(){//从config中读取上传文件类型限制string strFileTypeLimit = ConfigurationManager.AppSettings["FileTypeLimit"].ToString();//当前文件扩展名是否能在这个字符串中找到?if (strFileTypeLimit.IndexOf(Path.GetExtension(FileUpload.FileName).ToLower()) > -1)return true;elsereturn false;}private void ShowMessageBox(string strMessaage){ClientScript.RegisterStartupScript(this.GetType(), "", string.Format("<script>alert('{0}')</script>", strMessaage));}
}

===========================================================================

如果觉得对您有帮助,微信扫一扫支持一下:

asp.net 文件上传和下载管理源码相关推荐

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

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

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

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

  3. Java基于nfs-client包实现NFS协议连接linux服务器进行文件上传与下载操作源码

    添加依赖 // https://mvnrepository.com/artifact/com.emc.ecs/nfs-clientcompile group: 'com.emc.ecs', name: ...

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

    效果图 上传文件页面: 下载文件页面:   1.母版页site.Master <%@ Master Language="C#" AutoEventWireup="t ...

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

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

  6. ASP.NET MVC实现简单的文件上传与下载

    使用ASP.NET MVC实现简单的文件上传与下载. 1.上传文件HTML <form action='@Url.Action("Upload", "File&qu ...

  7. asp.net coree文件上传与下载实例

    asp.net core像springboot非常相似,我们从一个springboot文件上传与下载的例子来引到asp.net core的文件上传与下载: 本文asp.net core版本为:6.0 ...

  8. 超详细的文件上传和下载(Spring Boot)

    超详细的文件上传和下载 前言Ⅰ:@RequestParam和@RequestPart的区别 @RequestPart @RequestPart这个注解用在multipart/form-data表单提交 ...

  9. Internet Explorer 各版本文件上传和下载限制

    在过去的几年中,我们对WinINET的文件上传和下载限制有一些疑问.我在下表中总结了这些限制: 文件上传和下载限制 上传(总大小) 下载(每个文件) Internet Explorer 6 2GB 2 ...

最新文章

  1. Redis多机功能之复制
  2. Hibernate映射关系之一对多
  3. Navicat 提示 Access violation at address ***(771B7870) in module ‘ntdll.dll’. Read of address ***(220A
  4. Java NIO系列教程(十一) Pipe
  5. webservie报文格式
  6. 1、MapReduce理论简介
  7. Java基础——Arrays工具类的使用
  8. IDEA2020的中文插件_IDEA2020个性化设置(装逼且实用)
  9. ES6新特性_Symbol的内置属性---JavaScript_ECMAScript_ES6-ES11新特性工作笔记017
  10. 前端特效demo | 值得收藏的6个 HTML5 Canvas 实用案例 1
  11. [Unity] 在协程中等待指定的毫秒
  12. Cadence OrCAD Capture 设计准备图文教程
  13. 使用ipop共享串口提高工作效率
  14. xmake经验总结1:解决c++ future/promise抛出std::system_error的问题
  15. ALFA缺陷检测软件外观检测自学习人工智能软件
  16. 动态规划 -- 活动时间问题
  17. python 虚拟环境打包exe方法及路过的坑
  18. Unity3D Dither 抖动Shader实现
  19. android keep class,Android混淆快速配置之@Keep
  20. IDEA里面的各种小图标

热门文章

  1. (附源码)springboot 网上作业管理系统 毕业设计 612317
  2. 开源像素贴图_Google值得信赖的硬件计划是开源,像素精确的邮政编码以及更多开源新闻...
  3. LeetCode 第201次周赛 1546. Maximum Number of Non-Overlapping Subarrays With Sum Equals Target
  4. JQuery中的动画效果
  5. NSD Devops day03
  6. 【C++】JOISC 2020 Day3原题+翻译+解析+代码
  7. android All
  8. C++中STL用法总结
  9. 即时零售再加码,深耕蓝海的达达集团或将迎来市值新升浪?
  10. JPEG-LS压缩算法研究