Создание и потоковая передача архива изображений zip-файла для загрузки C #

Я использую любимую библиотеку архивирования DotNetZip в MVC3 для создания файла Zip на лету, который содержит изображения .png из двоичных файлов, хранящихся в базе данных. Затем я передаю сгенерированный файл Zip для загрузки пользователем. (Я проверяю данные изображения перед сохранением в базе данных, поэтому вы можете предположить, что все данные изображения действительны).

public ActionResult PictureExport()
      {
           IEnumerable<UserPicture> userPictures = db.UserPicture.ToList();
           //"db" is a DataContext and UserPicture is the model used for uploaded pictures.
           DateTime today = DateTime.Now;
           string fileName = "attachment;filename=AllUploadedPicturesAsOf:" + today.ToString() + ".zip";
           this.Response.Clear();
           this.Response.ContentType = "application/zip";
           this.Response.AddHeader("Content-Disposition", fileName);

           using (ZipFile zipFile = new ZipFile())
             {
               using (MemoryStream stream = new MemoryStream())
                {
                 foreach (UserPicture userPicture in userPictures)
                  {
                     stream.Seek(0, SeekOrigin.Begin);
                     string pictureName = userPicture.Name+ ".png";
                     using (MemoryStream tempstream = new MemoryStream())
                     {
                        Image userImage = //method that returns Drawing.Image from byte[];
                        userImage.Save(tempstream, ImageFormat.Png);
                        tempstream.Seek(0, SeekOrigin.Begin);
                        stream.Seek(0, SeekOrigin.Begin);
                        tempstream.WriteTo(stream);
                     }

                     zipFile.AddEntry(pictureName, stream);
                 }

                zipFile.Save(Response.OutputStream);
              }

           }

        this.Response.End();
        return RedirectToAction("Home");
      }

Этот код будет работать для загрузки и экспорта ОДНОГО (1) изображения. Однако после загрузки более одного изображения в базу данных и последующей попытки их экспорта, созданный файл Zip будет содержать только данные самого последнего загруженного изображения. Все остальные Имена изображений появятся в zip-файле, но их размер будет равен 0, и они будут просто пустыми файлами.

Я предполагаю, что моя проблема связана с MemoryStreams (или что я упускаю что-то простое), но, насколько я могу судить, шагая по коду, изображения извлекаются из базы данных и добавляются в ZIP-файл успешно ...

Ответы на вопрос(1)

Ваш ответ на вопрос