【发布时间】:2018-02-03 05:47:41
【问题描述】:
我正在尝试创建一个接受 CSV 文件但数据流不返回任何记录的端点。
这是我的视图模型:
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());
}
我也尝试过逐行读取 CSV,但 Csv.Read() 返回 false。我不确定如何调试。
我正在使用邮递员生成帖子:
在调试器中,我可以看到 bulkUpload.JobCsv 中正确填充了文件名和长度值,所以我认为我的错误在于我访问流的方式。
我做错了什么?
【问题讨论】:
标签: c# asp.net-core asp.net-core-2.0 asp.net-core-webapi csvhelper