ASP.NET下文件批量下载应用
2012-08-23 16:24
375 查看
1.场景描述
在B/S环境下,客户提出批量导出员工照片功能。具体为:选中一个部门或者单位,系统能够批量下载所选单元的照片到客户端。
2.解决思路
由于系统中员工的照片存储在服务器硬盘上,因此,应该有两种方式供用户选择:其一,写一个C/S客户端,利用客户端功能,实现客户端批量下载操作。其二,在现有ASP.NET环境下,将所需照片文件合并成一个文件下载到用户客户端。比较而言,两种思路的难度都不大,但是考虑到系统的统一性,最终决定采用方案二,将文件打包后下载。
3.实现步骤
在用户操作界面,由用户选择员工,系统根据所选人员,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹。然后调用RAR程序,对临时文件夹进行压缩,然后输出到客户端。最后删除临时文件夹。
4.部分关键代码
创建临时文件夹
产生RAR文件,及文件输出
在B/S环境下,客户提出批量导出员工照片功能。具体为:选中一个部门或者单位,系统能够批量下载所选单元的照片到客户端。
2.解决思路
由于系统中员工的照片存储在服务器硬盘上,因此,应该有两种方式供用户选择:其一,写一个C/S客户端,利用客户端功能,实现客户端批量下载操作。其二,在现有ASP.NET环境下,将所需照片文件合并成一个文件下载到用户客户端。比较而言,两种思路的难度都不大,但是考虑到系统的统一性,最终决定采用方案二,将文件打包后下载。
3.实现步骤
在用户操作界面,由用户选择员工,系统根据所选人员,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹。然后调用RAR程序,对临时文件夹进行压缩,然后输出到客户端。最后删除临时文件夹。
4.部分关键代码
创建临时文件夹
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->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(1, the_rar.Length - 7); Directory.CreateDirectory(patch); //命令参数 //the_Info = " a " + rarName + " " + @"C:Test?70821.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("gb2312"); Response.WriteFile(fileInfo.FullName); Response.Flush(); string tempPath = fileName.Substring(0, fileName.LastIndexOf("\\")); DelDir(tempPath); Directory.Delete(tempPath); Response.End(); }
相关文章推荐
- ASP.NET环境下文件批量下载及应用
- ASP.NET下文件批量下载应用
- 在ASP.NET中实现压缩多个文件为.zip文件,实现批量下载功能 (转载并优化处理篇)
- ASP.NET多文件批量打包下载 (这个好)
- ASP.NET实现批量下载文件及附件的方法详细讲解
- 在ASP.NET中实现压缩多个文件为.zip文件,实现批量下载功能
- ASP.NET多文件批量打包下载 (这个好)
- ASP.NET多文件批量打包下载
- ASP.Net文件及附件批量下载解决方案
- Asp.net 实现选择文件批量下载
- 在ASP.NET中实现压缩多个文件为.zip文件,实现批量下载功能
- ASP.NET多文件批量打包下载
- ASP.NET多文件批量打包下载
- ASP.NET批量下载文件
- ASP.NET批量下载文件的方法
- ASP.NET多文件批量打包下载
- ASP.NET文件上传控件——WebbUpload我下载了这个组件后做了一些修改并应用了ajax技术
- ASP.NET批量下载文件的方法
- ASP.NET多文件批量打包下载
- ASP.NET多文件批量打包下载