小编Bri*_*riz的帖子

.NET Core Web API 从内存流返回 Zip 文件

我正在尝试在内存中创建一个 Zip 文件,将其他一些文件添加为存档条目,并使用以下命令从我的 Web API 控制器返回它:

try {
    // Create Zip Archive in Memory
    MemoryStream memoryStream = new MemoryStream();
    ZipArchive zipArchive = new ZipArchive(memoryStream, ZipArchiveMode.Create);
    foreach(Worksheet w in worksheets) {
        string fullPath = Path.Combine(baseFolder, w.FilePathAndName);
        if(System.IO.File.Exists(fullPath)) {
            ZipArchiveEntry f = zipArchive.CreateEntry(w.FileName, CompressionLevel.Fastest);
            using(Stream entryStream = f.Open()) {
                FileStream fileStream = System.IO.File.OpenRead(fullPath);
                await fileStream.CopyToAsync(entryStream);
            }
        }
    }
    memoryStream.Seek(0, SeekOrigin.Begin);
    return File(memoryStream, "application/zip", $"Files.zip");
} catch(Exception e) {
    return StatusCode(500, "Error: Could not generate zip file");
}
Run Code Online (Sandbox Code Playgroud)

这会创建并返回一个 zip 文件,但是它是无效的。7-Zip 给了我这个错误 …

.net memorystream zipfile .net-core asp.net-core-webapi

4
推荐指数
1
解决办法
2549
查看次数