У меня есть действие контроллера, которое создает zip-файл и отправляет его пользователю для загрузки.Проблема в том, что zip-файл создается, но он пуст.Почему-то он не записывает файлы изображений в MemoryStream.Интересно, чего мне не хватает.Если я запишу zip-файл на диск, все будет работать так, как ожидалось, но я бы не стал сохранять файлы на диск, если смогу избежать этого.Это то, что я пытался использовать dotnetzip:
public ActionResult DownloadGraphs()
{
var state = Session["State"];
using (ZipFile zip = new ZipFile())
{
if (state == "IA")
{
zip.AddFile(Server.MapPath("~/Content/DataVizByState/FallGraphs/Watermarked/Fall_IA.jpg"), "");
zip.AddFile(Server.MapPath("~/Content/DataVizByState/SpringGraphs/Watermarked/Spring_IA.jpg"), "");
}
MemoryStream output = new MemoryStream();
zip.Save(output);
output.Seek(0, SeekOrigin.Begin);
var fileName = state + "Graphs.zip";
return File(output, "application/zip", fileName);
}
}
Это вызывает загрузку в представлении, основанном на нажатии кнопки:
$('#graphDwnldBtn').click(function (evt) {
window.location = '@Url.Action("DownloadGraphs", "DataSharing")';
})
Нужно ли использовать StreamWriter или Reader или что-то?Это первый раз, когда я пытался сделать что-то подобное, и это было собрано вместе при чтении различных сообщений stackoverflow ...