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 に答える