【发布时间】:2018-03-16 07:36:55
【问题描述】:
我正在启动一个新的 Web 应用程序项目,用户可以在其中上传 .csv 文件,以便我可以处理该文件。
目前我可以让用户上传文件,但是当我尝试使用StreamReader 从文件生成的流中读取时,StreamReader 似乎无法从流中正确读取。
顺便说一下,上传文件部分我是按照微软教程here
这是视图的代码。
<form method="post" enctype="multipart/form-data" asp-controller="Upload" asp-action="Upload">
<div class="form-group">
<div class="col-md-10">
<p>Upload one or more files using this form:</p>
<input type="file" name="files" >
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<input type="submit" value="Upload" />
</div>
</div>
这是我的控制器代码
len、len2 和 p 是用于调试目的的变量。
[HttpPost]
public async Task<IActionResult> Upload(IFormFile file)
{
if (file != null && file.Length > 0)
{
var filePath = Path.GetTempFileName(); //Note: May throw excepetion when temporary file exceeds 65535 per server
var stream = new FileStream(filePath, FileMode.Create);
await file.CopyToAsync(stream);//
long len = stream.Length;// 412 bytes
StreamReader reader = new StreamReader(stream);//*
int p = reader.Peek();//currently the next character is EoF
var val = reader.ReadLine();
long len2 = stream.Length;// 412 bytes
bool end = reader.EndOfStream;// true
//do some stuff here
return RedirectToAction("Success");
}
else
{
return RedirectToAction("Upload_fail");//file not found
}
}
我们将不胜感激任何建议或帮助。
【问题讨论】:
-
尝试在将流加载到阅读器之前将其位置重置为 0。
stream.Position = 0 -
@Kyle 感谢您的建议,这确实有效。所以我想知道是什么导致该位置移动到文件末尾?
标签: c# asp.net-mvc asp.net-core asp.net-core-2.0