ASP.NET下文件批量下载应用

ASP.NET下文件批量下载应用,第1张

场景描述

在B/S环境下 客户提出批量导出员工照片功能 具体为 选中一个部门或者单位 系统能够批量下载所选单元的照片 下载到用户客户端

解决思路

由于系统中员工的照片存储在服务器硬盘上 因此 应该有两种方式供用户选择 其一 写一个C/S客户端 利用客户端功能 实现客户端批量下载 *** 作 其二 在现有ASP NET环境下 将所需照片文件合并成一个文件下载到用户客户端 比较而言 两种思路的难度都不大 但是考虑到系统的统一性 最终决定采用方案二 将文件打包后下载

实现步骤

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

部分关键代码

创建临时文件夹

string Folder = DateTime Now ToString( HHMMss );

string tempFolder = Path Combine(ImagesPath Folder);

Directory CreateDirectory(tempFolder);

var empList = rs ToList();

拷贝照片文件

foreach (var x in empList)

{

File Copy(ImagesPath + @ \ + x ID + jpg tempFolder + @ \ + x DeptName + + x Name + + x ID + jpg );

}

产生RAR文件 及文件输出

RARsave(tempFolder tempFolder Folder);

ResponseFile(tempFolder + @ \ + Folder + rar );

public void RARsave(string patch 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( the_rar Length );

Directory CreateDirectory(patch);

//命令参数

//the_Info = a    + rarName +   + @ C:Test txt ; //文件压缩

the_Info = a + rarName +   + patch +   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 ex)

{

throw ex;

}

}

protected void ResponseFile(string fileName)

{

FileInfo fileInfo = new FileInfo(fileName);

Response Clear();

Response ClearContent();

Response ClearHeaders();

Response AddHeader( Content Disposition attachment;filename= + fileName);

Response AddHeader( Content Length fileInfo Length ToString());

Response AddHeader( Content Transfer Encoding binary );

Response ContentType = application/octet stream ;

Response ContentEncoding = System Text Encoding GetEncoding( gb );

Response WriteFile(fileInfo FullName);

Response Flush();

string tempPath = fileName Substring( fileName LastIndexOf( \\ ));

DelDir(tempPath);

Directory Delete(tempPath);

Response End();

}

lishixinzhi/Article/program/net/201311/13948

问题一:如何打包word文件 选择所要的WORD文档――单击右键――添加到压缩文件――压缩文件名――压缩文件格式(二选一)――完成
就这样,可以把多个文档打包

问题二:怎样把一个文件制作成多个压缩包? 1楼的太多了~~~写文章啊
最简单的~RAR压缩软件应该有的吧
点住你要压所的文件-右键-添加到压缩文件-常规-最下面有个输入体积的~可以自定义~~用M的话有时会出错~多来几遍就好了~
比如一个10M的文件~你应该输入1 M然后确定,最后会压成10个1M的压缩包,会自动遍号~从1-10~~

问题三:如何将几个文件打包? 简单,用鼠标把你要打包的文件都选上,随便在其中一个文件上面点右键,添加到压缩文件就OK了怕你不会,再教你怎么选那些文件:按住键盘Ctrl键不要放开(在键左下角),用鼠标一个一个把你要打包的文件都点上,它们都变成蓝色了那就是都选上了

问题四:怎么把文件弄成压缩包 先把要打包的文件装入一个文件夹中,然后对这个文件夹右击鼠标,出现WinRAR选项,点击后面的小箭头,出现添加到压缩文件这一项,单击出现对话框,可根据需要选择压缩文件。

问题五:怎样将电脑中的文件制作一个压缩包? 选中要要压缩的文件---右键---添加到压缩文件---d出个窗口 点确定---压缩中----压缩完后在原文件的文件夹下就会有个后缀为rar文件这就是压缩后的文件
如果右键没有“添加到压缩文件”选项,表明你没有安装压缩的软件,建议下载 好压 或者winrar 安装后就可以安我上面说的做了

问题六:怎么把文件弄成压缩包? 打开文件(ps:你要压缩的)点击鼠顶左键把要压缩的文件包括起来,然后,点击鼠标右键,选中添加到压缩文件然后就开始压缩,然后,就完成了!

问题七:怎么把几个文件弄成一个压缩包? 把这些文件,放在一个文件夹里 然后压缩, 或者全选以后 点击鼠标右键 -----添加到压缩文件也行

问题八:js如何做到在内存打包文件 200分 其实在服务器侧比较好实现
在浏览器侧,需要html5 特性,依赖jsZip库
需要指出一下,当文件体量较大的时候,由于单页面占用内存较多,可能会引起浏览器崩溃,因为浏览器不仅要把所有文件读进内存,还要序列化成base64,base64要比原数据内存占用更大一些。
例子:
首先,使用ajax20特性,读入二进制文件:
/ @param url 要下载的文件 @param arr 数组,存放每个文件的二进制数据 @total 总文件数,因为是异步的,所以要在所有文件下载完成后调用回调 /function ajaxFile(url,arr,total){var oReq = new XML>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13198555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-19
下一篇 2023-06-19

发表评论

登录后才能评论

评论列表(0条)

保存