繁体   English   中英

如何获取zip文件的.dat文件的文本,这些文件位于asp.net core 6.0的一个zip文件的子文件夹中?

[英]How to get text of .dat files of the zip files which are available in sub folder of one zip file in asp.net core 6.0?

我的IFormFile zip 文件包含多个文件夹,其中又包含 zip 个文件,其中包含.dat 类型的文件,因此需要读取此.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”。

只是因为代码datFile.ToString()返回相对路径。

在此处输入图像描述

但是,StreamReader 的构造函数需要完整路径

在此处输入图像描述

错误表明:如果将相对路径传递给构造函数,它将像这样处理路径:

var fullpath = Path.Combine(System.Environment.CurrentDirectory, relativepath);

您可以尝试将 stream 而不是路径传递给构造函数:

StreamReader reader = new StreamReader(datFile.Open());

我调试了结果:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM