使用 HttpResponse 将 byte[] 作为 file.jpg 添加到 ZipFile

Add byte[] to ZipFile as file.jpg with HttpResponse

我已经截取了这段下载成功的代码:

byte[] bytes;
bytes = Convert.FromBase64String(lehrling.passfoto);
Response.Clear();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "image/jpg";
Response.AddHeader("content-disposition", "attachment; filename=" + lehrling.vorname + "." + lehrling.nachname + ".jpeg");
Response.OutputStream.Write(bytes, 0, bytes.Length);
Response.End()

这很好用。我从中得到一个 jpeg 文件。现在:

我创建了一个 for 循环,为每个字节数组执行上面显示的代码:

    for (int i = 0; i < anzahlBilder; i++)
    {
         //My Code here
    }
    Response.End()

我从其他地方得到 anzahlBilder。这对我的问题并不重要。我将 Response.End() 放在我的 for 循环之外,否则它会在下载 1 image 之后结束。

邮编:

现在我想创建一个 .Zip 文件,其中包含我所有的图像。我不知道该怎么做。有什么建议吗?

通过使用System.IO.Compression.ZipFile

您需要添加对程序集的 dll 引用,"System.IO.Compression.FileSystem.dll" 并导入命名空间。

System.IO.Compression

在顶部。

    ZipFile zipFile = new ZipFile();
    for(int i = 0; i < anzahlBilder; i++)
    {
        using (MemoryStream ms= new MemoryStream(Convert.FromBase64String(lehrling.passfoto)))
        {
            Image userImage = Image.FromStream(ms);   
            userImage.Save(ms, ImageFormat.Jpeg);  
            ms.Seek(0, SeekOrigin.Begin);
            byte[] imageData = new byte[ms.Length];
            ms.Read(imageData, 0, imageData.Length);
            zipFile.AddEntry(lehrling.vorname + "." + lehrling.nachname + ".jpeg", imageData);
        }
    }

    zipFile.Save(Response.OutputStream);

lehrling.passfotolehrling.vorname + "." + lehrling.nachname + ".jpeg" 进行必要的更改以使其正常工作。