在 ASP.NET 核心 MVC 中上传后立即读取文件

Read a file immediately after uploading it in ASP.NET core MVC

我刚刚上传了一个文件到我项目的 wwwroot/files 文件夹中。我打算做的是在上传后立即读取文件。 我用来上传文件的代码工作正常,但用于读取文件的代码抛出此异常: 处理请求时出现未处理的异常。 IOException: 该进程无法访问文件 'campuses.sql',因为它正被另一个进程使用。 Campuses.sql 是我尝试上传和读取的文件。 下面是我上传和读取文件的代码。

 public IActionResult Institution(IFormFile InstitutionFile)
    {
        if(InstitutionFile != null)
        {
            var fileName = Path.Combine(he.WebRootPath + "/files/", Path.GetFileName(InstitutionFile.FileName));
            InstitutionFile.CopyTo(new FileStream(fileName, FileMode.Create));

       //Everything runs fine till here

            int counter = 0;
            string line;

            // Read the file and display it line by line.  
            System.IO.StreamReader file =
                new System.IO.StreamReader(fileName);
            while ((line = file.ReadLine()) != null)
            {
                System.Console.WriteLine(line);
                counter++;
            }

            file.Close();

            System.Console.ReadLine();



        }

        return RedirectToAction("Index", "Institutions");

    }

所以: 1.我怀疑是上传过程还在使用文件。如何停止使用该文件的进程以便我可以阅读它?

  1. 还有其他方法可以帮助我解决这个问题吗?

我打算从 .csv 文件中读取数据并将记录插入到数据库中 运行。

谢谢!

InstitutionFile 而不是物理文件中读取。

同时将 FileStream 放入 using 块中,以便释放文件。

var fileName = Path.Combine("" + "/files/", Path.GetFileName(InstitutionFile.FileName));
using (var fileStream = new FileStream(fileName, FileMode.Create))
      InstitutionFile.CopyTo(fileStream);

var st = new MemoryStream();
InstitutionFile.CopyTo(st);
var content = Encoding.ASCII.GetString(st.ToArray());