问题描述
我对 .net 比较陌生,我不确定为什么我在使用 StreamReader 时遇到问题。最终,该项目会收到一个我写入磁盘的 CSV 文件,然后尝试使用 CsvReader 进行解析。它按预期写入磁盘,并且传递给解析器的绝对路径有效。使用来自 CsvReader 的示例代码返回一个空对象,并由返回错误“此流不支持超时”的阅读器解释。
我的索引使用ajax调用控制器
function uploadFile(file) {
var _url = '@Url.Action("index","FileUpload")';
var formData = new FormData();
formData.append("file",file);
$.ajax({
url: _url,data: formData,processData: false,contentType: false,type: "POST",success: function (data) {
$('.fileStatus').text("File Uploaded");
showFile(file);
},error: function (jqXHR) {
$('.fileStatus').text("File Error");
}
});
}
FileUploadController 将此文件写入磁盘,然后将绝对路径传递给 CSV 解析器方法以供其读取。
[HttpPost("FileUpload")]
public async Task<IActionResult> Index(IFormFile file)
{
if (file != null)
{
var filename = this.EnsureCorrectFilename(file.FileName);
var csvFile = this.GetPathAndFilename(filename);
using (var stream = new FileStream(csvFile,FileMode.Create))
{
file.CopyTo(stream);
}
var csv = csvController.ReadInCSV(csvFile);
}
return Ok();
}
这里的读者出错了。我不确定为什么“reader.BaseStream.ReadTimeout”会抛出“System.InvalidOperationException”类型的异常。消息“此流不支持超时。”
public IEnumerable<dynamic> ReadInCSV(string absolutePath)
{
using (var reader = new StreamReader(absolutePath))
using (var csvReader = new CsvReader(reader,CultureInfo.InvariantCulture))
{
csvReader.Configuration.RegisterClassMap<InvoiceMap>();
var records = csvReader.GetRecords<InvoiceModel>().ToArray();
return records;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)