华域联盟 .Net ASP.NET批量下载文件的方法

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

本文实例讲述了ASP.NET批量下载文件的方法。分享给大家供大家参考。具体方法如下:

一、实现步骤

在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹。然后调用 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) 方法

复制代码 代码如下:
/// <summary>

/// 生成RAR文件

/// </summary>

/// <param name="path">存放复制文件的目录</param>

/// <param name="rarPatch">RAR文件存放目录</param>

/// <param name="rarName">RAR文件名</param>

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)方法

复制代码 代码如下:
/// <summary>

/// 下载生成的RAR文件

/// </summary>

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) 方法

复制代码 代码如下:
/// <summary>

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

/// </summary>

/// <param name="tempPath">临时目录路径</param>

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;

    }

}

希望本文所述对大家的asp.net#程序设计有所帮助。

您可能感兴趣的文章:

  • ASP.NET Web Api 2实现多文件打包并下载文件的实例
  • ASP.NET(C#) Web Api通过文件流下载文件的实例
  • ASP.NET 在下载文件时对其重命名的思路及实现方法
  • asp.net C#实现下载文件的六种方法实例
  • ASP.NET中下载文件的几种实例代码
  • 在ASP.NET中下载文件的实现代码
  • asp.net BackgroundWorker之在后台下载文件
  • asp.net 下载文件时根据MIME类型自动判断保存文件的扩展名
  • asp.net 下载文件时输出文件内容
  • asp.net Web Services上传和下载文件(完整代码)
  • ASP.NET实现从服务器下载文件问题处理

本文由 华域联盟 原创撰写:华域联盟 » ASP.NET批量下载文件的方法

转载请保留出处和原文链接:https://www.cnhackhy.com/55514.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部