2014-10-01 2 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

+0

Каков фактический вопрос? Как создать zip-файл? Вы уже что-то пробовали? Вы пытались сделать это в Google и не нашли решения? –

+0

Hi Kanavos Мой вопрос - как загрузить сразу несколько файлов из базы данных. Zipping является вторым приоритетом. Даже если я могу хранить все файлы в папке, тогда это прекрасно. Я искал его, но я не нашел подходящего решения. Каждое решение в google основано на наборе файлов, размещенных на сервере, но не в базе данных, которая полностью отличается от моего требования. – shabareesh

ответ

1

Вы не упомянули, какую версию .NET вы используете.

С .NET 4.5, вы можете использовать ZipFile класса: ZipFile Class

Примера записи в почтовом архив показано здесь: ZipArchive.CreateEntry

Update:

Альтернатива для более ранних версий .NET: SharpZipLib

+0

Документация [ZipArchiveEntry.Open] (http://msdn.microsoft.com/en-us/library/system.io.compression.ziparchiveentry.open (v = vs.110) .aspx) даже имеет образец на как создать запись и записать ее без предварительной записи на диск –

+0

Привет, Моя версия .net 3.5 – shabareesh

Смежные вопросы