c# - 如何使用 C# 解压缩属于 IFormFile 属性的任何 (zip) 文件
问题描述
我的场景是客户端将上传一个压缩文件。
然后在后端 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; }
}
}
推荐阅读
- codeigniter-4 - Codeigniter 4 - 从另一个控制器调用方法
- python - 用频率替换列值
- ios - Xamarin - 提交的应用程序 - 细化过程中发生错误
- c++ - 如何正确结束线程?
- ios - React Native Launch/Splash Screen 最佳实践?
- c# - 设置 HttpWebRequest 标头
- android - 如何停止显示 oneSignal 通知 UI?
- c# - IAccessible 的 accDoDefaultAction 被 ROLE_SYSTEM_PUSHBUTTON 忽略
- excel - Excel:尝试获取公式以基于跨多个表的单元格查找来填充值
- ruby-on-rails - React Rails 组件将无法工作 Rails 5.2.4