ASP.NET批量下载服务器端指定目录文件

 1             //遍历服务器指定文件夹下的所有文件
 2             string path = "uploads/Image/";
 3             string serverPath = Server.MapPath(path);
 4 
 5             //创建临时文件夹
 6             string tempName = DateTime.Now.ToString("yyyyMMddHHMMss");
 7             string tempFolder = Path.Combine(serverPath, tempName);
 8             Directory.CreateDirectory(tempFolder);
 9 
10             DirectoryInfo folder = new DirectoryInfo(serverPath);
11             foreach (FileInfo file in folder.GetFiles())
12             {
13                 string filename = file.Name;
14                 File.Copy(serverPath + "/" + filename, tempFolder + "/" + filename);
15             }
16             //ZKHelper.JSHelper.Alert("图片拷贝成功!");
17             //产生RAR文件,及文件输出
18             RARSave(tempFolder, tempName);
19             DownloadRAR(tempFolder + "\\" + tempName + ".rar");
 1         /// <summary>
 2         /// 生成RAR文件
 3         /// </summary>
 4         /// <param name="path">存放复制文件的目录</param>
 5         /// <param name="rarPatch">RAR文件存放目录</param>
 6         /// <param name="rarName">RAR文件名</param>
 7         private void RARSave(string rarPatch, string rarName)
 8         {
 9             string the_rar;
10             RegistryKey the_Reg;
11             Object the_Obj;
12             string the_Info;
13             ProcessStartInfo the_StartInfo;
14             Process the_Process;
15             try
16             {
17                 the_Reg = Registry.ClassesRoot.OpenSubKey(@"WinRAR");
18                 the_Obj = the_Reg.GetValue("");
19                 the_rar = the_Obj.ToString();
20                 the_Reg.Close();
21                 the_rar = the_rar.Substring(1, the_rar.Length - 7);
22                 the_Info = " a " + rarName + " -r";
23                 the_StartInfo = new ProcessStartInfo();
24                 the_StartInfo.FileName = "WinRar";//the_rar;
25                 the_StartInfo.Arguments = the_Info;
26                 the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
27                 //打包文件存放目录
28                 the_StartInfo.WorkingDirectory = rarPatch;
29                 the_Process = new Process();
30                 the_Process.StartInfo = the_StartInfo;
31                 the_Process.Start();
32                 the_Process.WaitForExit();
33                 the_Process.Close();
34             }
35             catch (Exception)
36             {
37                 throw;
38             }
39         }    

下载生成的RAR文件

 1         /// <summary>
 2         /// 下载生成的RAR文件
 3         /// </summary>
 4         private void DownloadRAR(string file)
 5         {
 6             FileInfo fileInfo = new FileInfo(file);
 7             Response.Clear();
 8             Response.ClearContent();
 9             Response.ClearHeaders();
10             Response.AddHeader("Content-Disposition", "attachment;filename=" + fileInfo.Name);
11             Response.AddHeader("Content-Length", fileInfo.Length.ToString());
12             Response.AddHeader("Content-Transfer-Encoding", "binary");
13             Response.ContentType = "application/octet-stream";
14             Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
15             Response.WriteFile(fileInfo.FullName);
16             Response.Flush();
17             string tempPath = file.Substring(0, file.LastIndexOf("\\"));
18             //删除临时目录下的所有文件
19             DeleteFiles(tempPath);
20             //删除空目录
21             Directory.Delete(tempPath);
22             Response.End();
23         }    
 1          /// <summary>
 2         /// 删除临时目录下的所有文件
 3         /// </summary>
 4         /// <param name="tempPath">临时目录路径</param>
 5         private void DeleteFiles(string tempPath)
 6         {
 7             DirectoryInfo directory = new DirectoryInfo(tempPath);
 8             try
 9             {
10                 foreach (FileInfo file in directory.GetFiles())
11                 {
12                     if (file.Attributes.ToString().IndexOf("ReadOnly") != -1)
13                     {
14                         file.Attributes = FileAttributes.Normal;
15                     }
16                     File.Delete(file.FullName);
17                 }
18             }
19             catch (Exception)
20             {
21                 throw;
22             }
23         }

 

ASP.NET批量下载服务器端指定目录文件,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。