C# 在asp.net核心终结点上读取Csv
我正在尝试创建一个接受CSV文件但数据流不返回任何记录的端点 这是我的视图模型:C# 在asp.net核心终结点上读取Csv,c#,asp.net-core,asp.net-core-2.0,asp.net-core-webapi,csvhelper,C#,Asp.net Core,Asp.net Core 2.0,Asp.net Core Webapi,Csvhelper,我正在尝试创建一个接受CSV文件但数据流不返回任何记录的端点 这是我的视图模型: public class BulkUploadViewModel { [Required] public IFormFile JobCsv { get; set; } [Required] public string UserId { get; set; } } 这是我的终点: [Route("BulkUpload")] [HttpPost] public async Task&l
public class BulkUploadViewModel
{
[Required]
public IFormFile JobCsv { get; set; }
[Required]
public string UserId { get; set; }
}
这是我的终点:
[Route("BulkUpload")]
[HttpPost]
public async Task<IActionResult> BulkUpload(BulkUploadViewModel bulkUpload)
{
if(!ModelState.IsValid)
{
return BadRequest();
}
List<BulkUploadDataModel> bulkList = new List<BulkUploadDataModel>();
using (var memoryStream = new MemoryStream())
{
await bulkUpload.JobCsv.CopyToAsync(memoryStream);
TextReader textReader = new StreamReader(memoryStream);
var csv = new CsvReader(textReader);
csv.Configuration.HasHeaderRecord = true;
bulkList = csv.GetRecords<BulkUploadDataModel>().ToList();
}
return Ok(bulkList.Count());
}
[路由(“批量上传”)]
[HttpPost]
公共异步任务BulkUpload(BulkUploadViewModel BulkUpload)
{
如果(!ModelState.IsValid)
{
返回请求();
}
List bulkList=新列表();
使用(var memoryStream=new memoryStream())
{
等待bulkUpload.jobsv.CopyToAsync(memoryStream);
TextReader TextReader=新的StreamReader(memoryStream);
var csv=新的CsvReader(文本阅读器);
csv.Configuration.HasHeaderRecord=true;
bulkList=csv.GetRecords().ToList();
}
返回Ok(bulkList.Count());
}
我还尝试逐行读取CSV,但CSV.Read()
返回false。我不知道如何调试这个
我正在用邮递员生成帖子:
在调试器中,我可以看到文件名和长度值在bulkUpload.JobCsv
中正确填充,因此我假设我的错误在于如何访问流
我做错了什么?我有一个Asp.Net项目,在这个项目中,我使用包和以下代码从文件中读取csv:
using (var stream = bulkUpload.JobCsv.OpenReadStream())
{
var csvLines = CsvReader.ReadFromStream(stream).ToList();
}
您只是在
等待bulkUpload.jobsv.CopyToAsync(memoryStream)代码>
像这样:
await bulkUpload.JobCsv.CopyToAsync(memoryStream);
memoryStream.Position = 0;
TextReader textReader = new StreamReader(memoryStream);