Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net核心终结点上读取Csv_C#_Asp.net Core_Asp.net Core 2.0_Asp.net Core Webapi_Csvhelper - Fatal编程技术网

C# 在asp.net核心终结点上读取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

我正在尝试创建一个接受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());
}
[路由(“批量上传”)]
[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);