我在提名门户网站上工作。用户提交他们的提名以及一些附件。每项提名的附件数量可能从3到10不等。因此,对于每个提名,评估者必须一次下载10个文件,这非常繁忙。所以我想提供一个选项,一次下载与提名相关的所有附件作为Zip文件。我能够立刻下载单个文件。请为我提供一次下载多个文件的解决方案以及一些示例代码段。以下是我用于下载单个文件的代码 用于文件下载。我将文件内容存储为数据库中的二进制文件
protected void DownloadFile(object sender, EventArgs e)
{
int id = int.Parse((sender as LinkButton).CommandArgument);
byte[] bytes;
string fileName, contentType;
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "select Name, Data, ContentType from tblFiles where Id=@Id";
cmd.Parameters.AddWithValue("@Id", id);
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
sdr.Read();
bytes = (byte[])sdr["Data"];
contentType = sdr["ContentType"].ToString();
fileName = sdr["Name"].ToString();
}
con.Close();
}
}
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = contentType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
答案 0 :(得分:1)
您没有提到您正在使用的.NET版本。
使用.NET 4.5,您可以使用ZipFile
类:ZipFile Class
此处显示了写入zip存档的示例:ZipArchive.CreateEntry
<强>更新强>
早期版本的.NET的替代方案是:SharpZipLib