如何使用 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; }
}
}
我的场景是客户端将上传一个压缩文件。
然后在后端 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; }
}
}