这是我在 MySQL 数据库上的表。
+----+----------------------------------+---------------------------------+----------------------------------+---------------------------------+
| ID | xls | img | ppt | pdf |
+----+----------------------------------+---------------------------------+----------------------------------+---------------------------------+
| 1 | c:\inetpub\wwwroot\xls\test.xlsx | c:\inetpub\wwwroot\img\test.jpg | c:\inetpub\wwwroot\ppt\test.pptx | c:\inetpub\wwwroot\pdf\test.pdf |
+----+----------------------------------+---------------------------------+----------------------------------+---------------------------------+
在使用 asp net 和 c# 的 gridview 上我已经设置
<asp:TemplateField
ItemStyle-HorizontalAlign="Center"
HeaderText="Download">
<ItemTemplate>
<asp:ImageButton ID="img" runat="server"
ImageUrl="/aspnet/img/zip.gif" OnClick="img_Click" />
</ItemTemplate>
</asp:TemplateField>
我需要下载一个单独的 zip 文件来连接这四个文件。
我试过这个tutorial
但是 zip 文件是空的。
如果将这部分代码从
string img = reader["img"].ToString();
string ppt = reader["ppt"].ToString();
string xls = reader["xls"].ToString();
string pdf = reader["pdf"].ToString();
到
string img = @"c:\inetpub\wwwroot\img\test.jpg";
string ppt = @"c:\inetpub\wwwroot\ppt\test.pptx";
string xls = @"c:\inetpub\wwwroot\xls\test.xlsx";
string pdf = @"c:\inetpub\wwwroot\pdf\test.pdf";
文件下载正确。
我的代码如下
请帮我做。
using (MySqlConnection cn =
new MySqlConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString))
{
using (MySqlCommand cmd =
new MySqlCommand("SP_zip", cn))
{
cmd.Connection.Open();
cmd.CommandType = CommandType.StoredProcedure;
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
using (ZipFile zip = new ZipFile())
{
zip.AlternateEncodingUsage = ZipOption.AsNecessary;
zip.AddDirectoryByName("Files");
string img = reader["img"].ToString();
string ppt = reader["ppt"].ToString();
string xls = reader["xls"].ToString();
string pdf = reader["pdf"].ToString();
if (img != string.Empty)
{
zip.AddFile(img, "Files");
}
if (ppt != string.Empty)
{
zip.AddFile(ppt, "Files");
}
if (xls != string.Empty)
{
zip.AddFile(xls, "Files");
}
if (pdf != string.Empty)
{
zip.AddFile(pdf, "Files");
}
Response.Clear();
Response.BufferOutput = false;
string zipName = String.Format("Zip_{0}.zip", DateTime.Now.ToString("yyyyMMMddHHmmss"));
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "attachment; filename=" + zipName);
zip.Save(Response.OutputStream);
Response.End();
}
}
}
}