asp.net 文件上传和下载管理源码

🏷️ 365bet世界杯欢迎您 📅 2026-01-10 20:44:11 👤 admin 👀 1777 ❤️ 547
asp.net 文件上传和下载管理源码

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

效果图如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FileUploadManager.aspx.cs"

Inherits="NewsManagement_FileUploadManager" %>

文件上传管理

允许上传文件的类型:

允许上传单个文件的大小:



OnSelectedIndexChanged="lb_FileList_SelectedIndexChanged">

OnClick="btn_Delete_Click" />

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} 字节

上传时间:{1}
", 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;

else

return false;

}

private bool IsAllowableFileType()

{

//从config中读取上传文件类型限制

string strFileTypeLimit = ConfigurationManager.AppSettings["FileTypeLimit"].ToString();

//当前文件扩展名是否能在这个字符串中找到?

if (strFileTypeLimit.IndexOf(Path.GetExtension(FileUpload.FileName).ToLower()) > -1)

return true;

else

return false;

}

private void ShowMessageBox(string strMessaage)

{

ClientScript.RegisterStartupScript(this.GetType(), "", string.Format("", strMessaage));

}

}

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

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

相关推荐