当前位置:网站首页>ASP.NET有关于文件上传、下载、全选、删除选中重要干货(亲测有效)
ASP.NET有关于文件上传、下载、全选、删除选中重要干货(亲测有效)
2022-08-10 05:35:00 【三和尚】
前端代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PhotoManager.aspx.cs" Inherits="WebApplication2.PhotoManager" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
table{
border:1px solid blue;
border-collapse:collapse;
}
td{
border:1px solid blue;
padding:10px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>这是我的图片网站:</h1>
<asp:FileUpload ID="upLoad" runat="server" />
<asp:Button ID="loadBtn" runat="server" Text="上传图片" OnClick="loadBtn_Click" /><br />
<%-- 当做复选框按钮的时候,一定要设置AutoPostBack="True"表示自动提交到服务器,服务器在回馈到页面 --%>
<asp:CheckBox ID="chBox" runat="server" Text="全选" AutoPostBack="True" OnCheckedChanged="chBox_CheckedChanged" />
<asp:Button ID="deleteAll" runat="server" Text="选中删除" OnClick="deleteAll_Click" />
<asp:Table ID="tab" runat="server"></asp: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.IO;
namespace WebApplication2
{
public partial class PhotoManager : System.Web.UI.Page
{
List<CheckBox> list = new List<CheckBox>();
protected void Page_Load(object sender, EventArgs e)
{
//画页面
DrawPage();
this.deleteAll.Attributes.Add("onclick", "return confirm('您确定删除吗?');");
}
private void DrawPage()
{
//如果再一次进行重画操作的时候,就清空上一次页面所画的数据
this.tab.Rows.Clear();
string path = MapPath("/photos"); // /photos属于相对路径 MapPath将相对路径转成为绝对路径
DirectoryInfo dti = new DirectoryInfo(path); //获取目录
FileInfo[] fis = dti.GetFiles("*.*"); //在文件夹中获取文件集合
int count = fis.Length; //文件的个数
int rowCount = (count + 1) / 2; //取整数 //计算出需要的表格的行数
for (int i = 0; i < rowCount; i++)
{
TableRow row = new TableRow(); //生成行
this.tab.Rows.Add(row); //将生成的行,添加到表格里去
for (int j = 0; j < 2; j++)
{
TableCell cell = new TableCell(); //生成某行的列,相当于单元格
row.Cells.Add(cell); //将生成的单元格,放入行中
}
}
//把图片加入到表格中
for (int i = 0; i < count; i++)
{
FileInfo file = fis[i]; //获取单个文件
int rowIndex = i / 2; //获取该图片存的行号
int cellIndex = i % 2; //获取该图片存的列号
TableCell cell = this.tab.Rows[rowIndex].Cells[cellIndex]; //把图片的行号和列号添加进表格中
Image img = new Image(); //生成一个图片,是一个对象
img.ImageUrl = string.Format("/photos/{0}", file.Name); //获取图片的路径
img.Width = Unit.Pixel(100); //图片的宽为100px
img.Height = Unit.Pixel(120); //图片的高为100px
//添加下载按钮
Button btnDownLoad = new Button();
//给按钮添加ID号
btnDownLoad.ID = string.Format("btnDownLoad{0}", i);
//给按钮添加文字
btnDownLoad.Text = "下载";
//给按钮添加上传的文件名
btnDownLoad.CommandArgument = file.Name;
//注册事件
btnDownLoad.Click += new EventHandler(btnDownLoad_Click);
//添加删除按钮
Button btnDelete = new Button();
//给按钮添加ID号
btnDelete.ID = string.Format("btnDelete{0}", i);
//给按钮添加文字
btnDelete.Text = "删除";
//给按钮添加删除的文件名
btnDelete.CommandArgument = file.Name;
//注册事件
btnDelete.Click += new EventHandler(btnDelete_Click);
//点击删除按钮时给出提示
btnDelete.Attributes.Add("onclick", "return confirm('您确认删除吗?');");
//添加复选框按钮
CheckBox checkBox = new CheckBox();
checkBox.ID = string.Format("checkBox{0}", i);
checkBox.Text = file.Name;
list.Add(checkBox);
Literal br = new Literal(); //这是一个通用对象,用于.NET中没有控件
br.Text = "<br/>";
Literal br1 = new Literal(); //这是一个通用对象,用于.NET中没有控件
br1.Text = "<br/>";
cell.Controls.Add(img); //把图片添加进表格中
cell.Controls.Add(br);
cell.Controls.Add(btnDownLoad);
cell.Controls.Add(btnDelete);
cell.Controls.Add(br1);
cell.Controls.Add(checkBox);
}
}
protected void btnDelete_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
string path = this.MapPath("/photos");
string fileName = btn.CommandArgument;
string fullFileName = string.Format("{0}/{1}", path, fileName);
File.Delete(fullFileName);
this.DrawPage();
}
/// <summary>
/// 点击下载按钮进行下载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDownLoad_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
string path = this.MapPath("/photos");
//获取上传文件的名字
string fileName = btn.CommandArgument;
string fullName = Path.Combine(path,fileName);
HttpResponse respon = this.Response;//文件传输流
respon.ContentType = "application/octet-stream";//设置响应流的类型
string headerValue = string.Format("attachment;filename={0}", fileName);
respon.AddHeader("Content-Disposition", headerValue);//设置响应流的响应头
respon.Flush();//响应流及时提交
respon.TransmitFile(fullName);
respon.End();
}
/// <summary>
/// 点击上传图片按钮后进行上传图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void loadBtn_Click(object sender, EventArgs e)
{
string fullFileName = this.upLoad.PostedFile.FileName; //获取上传文件控件中的文件名(含路径),有时为相对路径,有时为绝对路径
string fileName = fullFileName.Substring(fullFileName.LastIndexOf("/") + 1);//获取上传文件的文件名
string type = fileName.Substring(fileName.LastIndexOf(".")+1); //获取文件的类型
if (type == "png" || type == "jpg")
{
//如果上传文件的类型为png或者是jpg类型的就进行上传
this.upLoad.SaveAs(string.Format("{0}/{1}", this.MapPath("/photos"), fileName));
}
else
{
Response.Write("<script language='javascript'>alert('您输入的文件格式不对,请重新输入')</script>");
}
//上传文件成功后要进行重画操作
this.DrawPage();
}
protected void chBox_CheckedChanged(object sender, EventArgs e)
{
if (this.chBox.Checked)
{
foreach (CheckBox chx in this.list)
{
chx.Checked = true;
}
}
else
{
foreach (CheckBox chx in this.list)
{
chx.Checked = false;
}
}
}
protected void deleteAll_Click(object sender, EventArgs e)
{
foreach (CheckBox cbx in this.list)
{
if (cbx.Checked)
{
string fileName = cbx.Text;
string path = this.MapPath("/photos");
string fullPath = string.Format("{0}/{1}", path, fileName);
File.Delete(fullPath);
}
}
this.DrawPage();
}
}
}
边栏推荐
- LeetCode 100.相同的树(简单)
- STM32单片机OLED俄罗斯方块单片机小游戏
- 51单片机ST188手持人体温度脉搏心率测量仪锂电池充电
- (Flutter报错)Cannot run with sound null safety, because the following dependencies
- WeChat applet wx.writeBLECharacteristicValue Chinese character to buffer problem
- 样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)
- mysql使用常见问题和解决
- 大端以及小端以及读寄存器习惯
- 棋类游戏-五子棋小游戏
- LeetCode 1351.统计有序矩阵中的负数(简单)
猜你喜欢

Deep learning TensorFlow entry environment configuration

详解 Hough 变换(上)基本原理与直线检测

LeetCode 100. The same tree (simple)

STM32单片机LORA无线远程火灾报警监控系统DS18B20MQ2火焰检测

LeetCode 100.相同的树(简单)

符号表

LeetCode 1351. Counting Negative Numbers in Ordered Matrices (Simple)

以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断

深度学习TensorFlow入门环境配置

【从零设计 LaTex 模板】1. 一些基础知识
随机推荐
.NET操作Excel高效低内存的开源框架 - MiniExcel
【图像识别】训练一个最最简单的AI使其识别Vtuber
力扣——统计只差一个字符的子串数目
LeetCode 1720.解码异或后的数组(简单)
R语言聚类分析——代码解析
VTK 初步 (1) ----- 可视化管线
详解 Hough 变换(下)圆形检测
【fiddler2】使用fiddler mock response 数据
树结构——2-3树图解
测一测异性的你长什么样?
Notes for RNN and Decision Tree
一个基于.Net Core 开源的物联网基础平台
GUI_AWT
【目标检测】相关指标的引入与解析
一个基于.Net Core跨平台小程序考试系统
微信小程序--模板与设置WXML
A little knowledge point every day
51单片机营养液自动配置搅拌系统TDS浓度采集自动加水加营养液
【fiddler3】使用fiddler设置弱网模式
C陷阱与缺陷 个人阅读笔记