gpt4 book ai didi

c# - 从内存中的 List 创建 Zip 文件

转载 作者:行者123 更新时间:2023-12-05 03:11:34 39 4
gpt4 key购买 nike

我有一个返回文件列表的网络服务。像这样:

public FileModel(){
string FileName {get;set;}
byte[] FileStream {get;set;}
string FileType {get;set;}
}

我的服务将返回:

  List<FileModel> files;

我必须将这个列表返回给浏览器,所以我需要将这些文件压缩到一个 zip 文件夹中。

但是,我不知道如何执行此操作,因为 .NET ZipArchive CreateFromDirectory 要求我提供要压缩的文件所在的目录。但是我没有目录,我只有这个列表。如何将此列表隐藏到压缩文件夹中。

最佳答案

给定

public FileModel(){
string FileName {get;set;}
byte[] FileStream {get;set;}
string FileType {get;set;}
}

下面是为了创建一个zip文件而写的

static class FileModelCompression {

public static Stream Compress(this IEnumerable<FileModel> files) {
if (files.Any()) {
var ms = new MemoryStream();
using(var archive = new ZipArchive(ms, ZipArchiveMode.Create, leaveOpen: true)) {
foreach (var file in files) {
var entry = archive.add(file);
}
}// disposal of archive will force data to be written to memory stream.
ms.Position = 0; //reset memory stream position.
return ms;
}
return null;
}

private static ZipArchiveEntry add(this ZipArchive archive, FileModel file) {
var entry = archive.CreateEntry(file.FileName, CompressionLevel.Fastest);
using (var stream = entry.Open()) {
file.FileStream.CopyTo(stream);
}
return entry;
}
}

关于c# - 从内存中的 List<Byte[]> 创建 Zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36752349/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com