在 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.我怀疑是上传过程还在使用文件。如何停止使用该文件的进程以便我可以阅读它?
- 还有其他方法可以帮助我解决这个问题吗?
我打算从 .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());
我刚刚上传了一个文件到我项目的 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.我怀疑是上传过程还在使用文件。如何停止使用该文件的进程以便我可以阅读它?
- 还有其他方法可以帮助我解决这个问题吗?
我打算从 .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());