2014-10-01 66 views
-1

Iam在提名門戶上工作。用戶提交他們的提名和一些附件。每個提名的附件數量可能在3到10之間。因此,對於每一次提名,評估人員必須每次下載10個文件,這非常緊張。所以我想提供一個選項,一次下載與提名有關的所有附件作爲Zip文件。我能夠一次下載單個文件。請爲我提供一個解決方案,一次下載多個文件以及一些示例代碼片段。以下是我用於下載文件下載的單個文件 的代碼。我將文件內容存儲爲數據庫中的二進制文件使用C從數據庫下載多個文件

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 [email protected]"; 
      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

您需要格式化您的代碼。 – artm 2014-10-01 04:34:01

+0

實際問題是什麼?如何創建一個zip文件?你有沒有嘗試過一些東西?你嘗試谷歌,並沒有找到解決方案? – 2014-10-01 07:08:12

+0

您好Kanavos我的實際問題是如何從數據庫一次下載多個文件。壓縮是第二優先。即使我能夠將所有文件存儲在文件夾中,那也很好。我使用了Google,但我沒有找到合適的解決方案。 Google中的每個解決方案都基於獲取託管在服務器中但不在數據庫中的一組文件,這與我的要求完全不同 – shabareesh 2014-10-01 07:17:26

回答

1

您沒有提及您使用的是什麼版本的.NET。

在.NET 4.5,你可以使用ZipFile類:ZipFile Class

寫入到一個zip壓縮文件的例子如下所示:ZipArchive.CreateEntry

更新:

替代了早期版本的.NET是:SharpZipLib

+0

[ZipArchiveEntry.Open](http://msdn.microsoft.com/en-us/library/system.io.compression.ziparchiveentry.open(v = vs.110).aspx)的文檔甚至包含一個示例如何創建一個條目並在不首先保存到磁盤的情況下寫入它 – 2014-10-01 07:09:04

+0

嗨Green,我的.net版本是3.5 – shabareesh 2014-10-01 07:16:25