一、实现步骤

在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹。然后调用 RAR程序,对临时文件夹进行压缩,然后输出到客户端。最后删除临时文件夹。

二、代码实现

1、ASP.NET批量下载 核心代码

代码如下:

//遍历服务器指定文件夹下的所有文件

string path = "uploads/Image/";

string serverPath = Server.MapPath(path);

//创建临时文件夹

string tempName = DateTime.Now.ToString("yyyyMMddHHMMss");

string tempFolder = Path.Combine(serverPath, tempName);

Directory.CreateDirectory(tempFolder);

DirectoryInfo folder = new DirectoryInfo(serverPath);

foreach (FileInfo file in folder.GetFiles())

{

string filename = file.Name;

File.Copy(serverPath + "/" + filename, tempFolder + "/" + filename);

}

//ZKHelper.JSHelper.Alert("图片拷贝成功!");

//产生RAR文件,及文件输出

RARSave(tempFolder, tempName);

DownloadRAR(tempFolder + "\\\\" + tempName + ".rar");

2、RARSave(string tempFolder, string tempName) 方法

代码如下:

///

/// 生成RAR文件

///

/// 存放复制文件的目录

/// RAR文件存放目录

/// RAR文件名

private void RARSave(string rarPatch, string rarName)

{

string the_rar;

RegistryKey the_Reg;

Object the_Obj;

string the_Info;

ProcessStartInfo the_StartInfo;

Process the_Process;

try

{

the_Reg = Registry.ClassesRoot.OpenSubKey(@"WinRAR");

the_Obj = the_Reg.GetValue("");

the_rar = the_Obj.ToString();

the_Reg.Close();

the_rar = the_rar.Substring(1, the_rar.Length - 7);

the_Info = " a " + rarName + " -r";

the_StartInfo = new ProcessStartInfo();

the_StartInfo.FileName = "WinRar";//the_rar;

the_StartInfo.Arguments = the_Info;

the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

//打包文件存放目录

the_StartInfo.WorkingDirectory = rarPatch;

the_Process = new Process();

the_Process.StartInfo = the_StartInfo;

the_Process.Start();

the_Process.WaitForExit();

the_Process.Close();

}

catch (Exception)

{

throw;

}

}

3、DownloadRAR(string file)方法

代码如下:

///

/// 下载生成的RAR文件

///

private void DownloadRAR(string file)

{

FileInfo fileInfo = new FileInfo(file);

Response.Clear();

Response.ClearContent();

Response.ClearHeaders();

Response.AddHeader("Content-Disposition", "attachment;filename=" + fileInfo.Name);

Response.AddHeader("Content-Length", fileInfo.Length.ToString());

Response.AddHeader("Content-Transfer-Encoding", "binary");

Response.ContentType = "application/octet-stream";

Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");

Response.WriteFile(fileInfo.FullName);

Response.Flush();

string tempPath = file.Substring(0, file.LastIndexOf("\\\\"));

//删除临时目录下的所有文件

DeleteFiles(tempPath);

//删除空目录

Directory.Delete(tempPath);

Response.End();

}

4、DeleteFiles(string tempPath) 方法

代码如下:

///

/// 删除临时目录下的所有文件

///

/// 临时目录路径

private void DeleteFiles(string tempPath)

{

DirectoryInfo directory = new DirectoryInfo(tempPath);

try

{

foreach (FileInfo file in directory.GetFiles())

{

if (file.Attributes.ToString().IndexOf("ReadOnly") != -1)

{

file.Attributes = FileAttributes.Normal;

}

File.Delete(file.FullName);

}

}

catch (Exception)

{

throw;

}

}

详细配置信息可以参考我写的这篇文章:http://blog.ncmem.com/wordpress/2019/08/28/net%E6%96%87%E4%BB%B6%E6%89%B9%E9%87%8F%E4%B8%8B%E8%BD%BD/

批量下载文件asp.net的更多相关文章

  1. C#异步批量下载文件

    C#异步批量下载文件 实现原理:采用WebClient进行批量下载任务,简单的模拟迅雷下载效果! 废话不多说,先看掩饰效果: 具体实现步骤如下: 1.新建项目:WinBatchDownload 2.先 ...

  2. Java批量下载文件并zip打包

    客户需求:列表勾选需要的信息,点击批量下载文件的功能.这里分享下我们系统的解决方案:先生成要下载的文件,然后将其进行压缩,生成zip压缩文件,然后使用浏览器的下载功能即可完成批量下载的需求.以下是zi ...

  3. 批量下载文件web

    最近需要这个所以写了一个例子一般批量下载由以下步骤组成: 1.确定下载的源文件位置 2.对文件进行打包成临时文件,这里会用到递归调用,需要的嵌套的文件夹进行处理,并返回文件保存位置 3.将打包好的文件 ...

  4. java批量下载文件为zip包

    批量下载文件为zip包的工具类 package com.meeno.trainsys.util; import javax.servlet.http.HttpServletRequest; impor ...

  5. ASP.NET批量下载文件的方法

    一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到 ...

  6. ASP.NET批量下载文件

    一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到 ...

  7. asp.net怎样实现批量下载文件(非打包形式下载)

    问题: 我想实现的是一个一个的下载. 比如我有一个文件列表.通过checkbox选择.通过单击下载按钮下载选中文件. 百度到都是用打包形式实现批量下载. 这是我自己写的代码,但是点击下载后只能下载一个 ...

  8. php批量下载文件

    最近用codeigniter开发一个图片网站,发现单文件下载很容易实现,批量下载的话,就有点麻烦. 普通php下载比较简单,比如我封装的一个函数: function shao_download($fi ...

  9. python_crawler,批量下载文件

    这个第一个python3网络爬虫,参考书籍是<python网络数据采集>.该爬虫的主要功能是爬取某个网站,并将.rar,.doc,.docx,.zip文件批量下载. 后期将要改进的是,用后 ...

随机推荐

  1. [转帖]Windows与Linux的命令行命令对比

    Windows与Linux的命令行命令对比 https://www.cnblogs.com/sztom/p/10785140.html * Windows不区分大小写,Linux区分大小写的. sn ...

  2. React同构起步

    React同构从0到1 前言 如果你想快速做react同构的新项目建议你去了解next.js等成熟框架,本教程仅限于想了解如何从0开始实现一个同构环境过程的同学,对于想改造现有spa项目的同学也很有帮 ...

  3. Win7(64位)下安装Anaconda+Tensorflow(CPU)

    一.安装Python 3.5 下载Anaconda网址:https://www.anaconda.com/download/ 安装:Anaconda3-4.2.0-Windows-x86_64.exe ...

  4. oracle常用函数(2)

    1) trunc函数,用于截断数字, 截断数字,用法为:trunc(n1,n2),n1表示要被截断的数字,n2表示要截断到那位,但是不会进行四舍五入. n2还可以表示负数,表示截断到小数点前,意思就是 ...

  5. easyUI解析原理

    easyUI通过parser解析器,对页面中的html元素进行查找, 如果查找到class名以easyui-开头的标签,就调用easyui对应的组件,将该标签封装成easyui的组件

  6. BFC的概念、BFC触发方式、BFC作用介绍

    一.BFC的概念 GFC——block fomatting context(中文译为块级格式化上下文) 二. 如何触发BFC 1. 设置 float 除 none 以外的值(left.right) 2 ...

  7. java 判断5张牌的组成

    题目: 一副牌中发五张扑克牌给你,判断是四条,三带二.三带一加一.两对.一对.顺子.还是什么都不是. 控制台输入: 1,1,1,1,2 示例输出: 四条 Java方法的代码: static Strin ...

  8. 一、core 启动设置文件中的错误(启动文件不存在)

    一.启动文件不存在 查看 别人的 原因是

  9. phpstorm配置总结

    phpstorm配合laravel框架作为项目开发,需要添加自动提示,减少查看文档的次数,本次使用的是idel-helper插件 在当前项目下 编辑composer.json文件文件,添加如下字符 & ...

  10. Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion' has value '1.8', but '1.7'

    第一种方法:安装1.8之前安装了1.7,将1.7卸载就好了. 第二种方法:删掉Windows\System32下的java.exe, javaw.exe 就行了,但是安装的1.8的jdk会回到1.7的 ...