【发布时间】:2022-11-30 13:59:26
【问题描述】:
我的IFormFile zip 文件包含多个文件夹,其中又包含包含 .dat 类型文件的 zip 文件,因此需要读取此 .dat 文件的文本数据。
我试过如下
[HttpPost]
public async Task<IActionResult> RequestFiles()
{
try
{
IFormFile file = Request.Form.Files[0];
Stream stream = file.OpenReadStream();
using (ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Read))
{
foreach (var entry in archive.Entries)
{
if (entry.Name.ToLower().Contains(".zip"))
{
MemoryStream nestedArchiveStream = new MemoryStream();
entry.Open().CopyTo(nestedArchiveStream);
using (var nestedArchive = new ZipArchive(nestedArchiveStream))
{
var datFile = nestedArchive.Entries[0];
StreamReader reader = new StreamReader(datFile.ToString());
string strAllFile = reader.ReadToEnd();
}
}
}
}
return Ok();
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
错误:找不到文件“D:\project'spath\WPNN788_4_11-15-22_084023.dat”。
【问题讨论】:
-
您正在尝试从请求的网络流中读取,而不是实际文件。你不能在网络流中来回。在解压缩之前,您必须将文件复制到磁盘。
标签: c# asp.net-core-6.0 c#-ziparchive