如何使用 C# 解压缩 IFormFile 属性 的任何 (zip) 文件

How to unzip any (zip)file that is IFormFile property using C#

我的场景是客户端将上传一个压缩文件。

然后在后端 asp.net 核心中,将文件检索为 IFormFile。

如何提取此 IFormFile 并在其中选择特定文件?

恐怕您可以考虑 ZipArchive 包裹。请先安装这个包来尝试我的代码片段<PackageReference Include="System.IO.Compression" Version="4.3.0" />

这是我的控制器方法:

[HttpPost]
        public async Task<IActionResult> Upload(FileModel file)
        {
            var stream = file.myfile.OpenReadStream();
            var archive = new ZipArchive(stream);
            ZipArchiveEntry innerFile = archive.GetEntry("code.txt");
            var filePath = Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\files", "code.txt");
            innerFile.ExtractToFile(filePath);
            return Ok();
        }

这是我的测试视图:

@model WebAppMvc.Models.FileModel

<form enctype="multipart/form-data" method="post">
    <dl>
        <dt>
            <label asp-for="myfile"></label>
        </dt>
        <dd>
            <input asp-for="myfile" type="file">
            <span asp-validation-for="myfile"></span>
        </dd>
    </dl>
    <input asp-page-handler="Upload" class="btn" type="submit" value="Upload" />
</form>

我的模型是这样的:

using Microsoft.AspNetCore.Http;

namespace WebAppMvc.Models
{
    public class FileModel
    {
        public IFormFile myfile { set; get; }
    }
}