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)