2015-04-17 122 views
0

我試圖搜索並下載上傳到數據庫的文件,我可以從數據庫中檢索文件。 下載單個文件的作品,但無法一次下載多個文件,我已閱讀關於下載爲zip文件,任何人都可以幫助??????Asp.net多個文件下載

 using (sampledbase dbcontext = new sampledbase()) 
     { 

      ZipFile zip = new ZipFile(); 
      long id = Convert.ToInt64(Request.QueryString["id"]); 
      System.Nullable<long> fileid = id; 
      var query = dbcontext.searchfile(ref fileid); 

      foreach (var i in query) 
      { 
       byte[] binarydata = i.Data.ToArray(); 
       Response.AddHeader("content-disposition", string.Format("attachment; filename =\"{0}\"", i.Name)); 
       Response.BinaryWrite(binarydata); 
       Response.ContentType = i.ContentType; 
       Response.End(); 
      } 
     } 
+0

爲什麼你不能將文件添加到Zip文件並下載Zip文件而不是多個文件? –

+0

如何從數據庫中壓縮所有文件? – user1747254

+0

我的方法是創建隱藏鏈接或表單標籤,並使用它們將請求發送到所需的文件並一個接一個地下載它們 – Kira

回答

0

我看到您正在使用ZipFile,因此您處於正確的方向。爲了壓縮文件,您可以保存文件的目錄,並使用此代碼壓縮的目錄:

string startPath = @"c:\example\start"; 
string zipPath = @"c:\example\result.zip"; 
ZipFile.CreateFromDirectory(startPath, zipPath); 

在你的情況,看看通過dbcontext.searchfile(返回的數據類型),並保存內容到使用StreamWriter之類的目錄。看你的代碼,類型似乎是一個byte [],你可以看到這個鏈接,瞭解如何將字節保存在一個文件中:Write bytes to file

另一種解決方案是直接壓縮字節[]:Create zip file from byte[]