我正在尝试下载zip文件。但下载的zip文件已损坏或损坏,我无法打开它。
我使用Ionic.Zip
库来创建我的File.zip
。我的代码:
public static Stream LoadImages(int[] ids)
{
var images = new List<byte[]>();
var imgNames = new List<string>();
foreach (var id in ids)
{
string fName;
images.Add(LoadImage(id, out fName));
imgNames.Add(fName);
}
MemoryStream outputStream = new MemoryStream();
using (var zip = new Ionic.Zip.ZipFile())
{
for(int i = 0; i < images.Count; i++)
{
zip.AddEntry(imgNames[i], images[i]);
}
zip.Save(outputStream);
}
return outputStream;
}
我的控制器操作:
public FileResult DownloadGallery(int[] ids)
{
var stream = ImageManager.LoadImages(ids);
return File(stream, "application/zip", "gallery.zip");
}
我的zip file
中的Http Response
可能不正确或有问题...
你有什么想法吗?
答案 0 :(得分:3)
您需要将MemoryStream
倒回到开头:
public FileResult DownloadGallery(int[] ids)
{
var stream = ImageManager.LoadImages(ids);
stream.Position = 0;
return File(stream, "application/zip", "gallery.zip");
}
FileResult
仅从当前位置的流开始写入。