1

我正在尝试下载 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......你有什么想法吗?

4

1 回答 1

3

您需要将您的MemoryStream背部倒回到开头:

public FileResult DownloadGallery(int[] ids)
{
    var stream = ImageManager.LoadImages(ids);
    stream.Position = 0;
    return File(stream, "application/zip", "gallery.zip");
}

FileResult唯一从当前位置所在的流开始写入。

于 2012-12-05T14:57:55.767 回答