C# 从多部分内容读取.csv文件-不作为文件数据读取
我正在构建一个WebAPI调用,它获取一个上传的.csv文件,读取该文件,然后根据内容执行操作。至少,这是它应该做的 我正在使用在和其他许多地方找到的代码,所有这些都表明我的文件内容应该读入C# 从多部分内容读取.csv文件-不作为文件数据读取,c#,csv,asp.net-web-api,multipartform-data,C#,Csv,Asp.net Web Api,Multipartform Data,我正在构建一个WebAPI调用,它获取一个上传的.csv文件,读取该文件,然后根据内容执行操作。至少,这是它应该做的 我正在使用在和其他许多地方找到的代码,所有这些都表明我的文件内容应该读入provider.FileData。但是,它们被读入provider.FormData,就好像它们是更通用的表单元素一样。它作为一个长字符串存在,具有不一致的分隔符,并且没有可使用的键/值对。我已经仔细研究了这么多问题,但没有发现任何有帮助的 如何将文件读入FileData,或解析FormData中的内容 在
provider.FileData
。但是,它们被读入provider.FormData
,就好像它们是更通用的表单元素一样。它作为一个长字符串存在,具有不一致的分隔符,并且没有可使用的键/值对。我已经仔细研究了这么多问题,但没有发现任何有帮助的
如何将文件读入FileData,或解析FormData中的内容
在控制器中:
public async Task<HttpResponseMessage> ImportPersons()
{
if (!Request.Content.IsMimeMultipartContent())
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
var provider = new MultipartFormDataStreamProvider(HttpContext.Current.Server.MapPath("~/App_Data"));
await Request.Content.ReadAsMultipartAsync(provider);
if (!provider.FileData.Any()) //evaluated as true
throw new InvalidOperationException("File does not contain any data.");
var personsToImport = new List<Persons>();
foreach (var record in provider.FileData)
{
//handle file contents
//code omitted
}
public异步任务ImportPersons()
{
如果(!Request.Content.IsMimeMultipartContent())
抛出新的HttpResponseException(HttpStatusCode.UnsupportedMediaType);
var provider=new MultipartFormDataStreamProvider(HttpContext.Current.Server.MapPath(“~/App_Data”);
wait Request.Content.ReadAsMultipartAsync(提供程序);
如果(!provider.FileData.Any())//计算为true
抛出新的InvalidOperationException(“文件不包含任何数据”);
var personsToImport=新列表();
foreach(provider.FileData中的var记录)
{
//处理文件内容
//代码省略
}
鉴于(简化):
我猜想程序可能会根据文件的最终位置将我的文件视为一个简单的表单输入,但将其更改为只包含一个文件上载输入并不会影响问题
@using (Html.BeginForm("Import", "Persons", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<fieldset>
<div >
<input type="text" disabled/>
<span>
<input type="file" name="FileUpload" id="FileUpload" accept=".csv" required />
Browse...
</span>
</div>
<div class="form-submit">
<a href="@Url.Action("Index", "Persons")">Cancel</a>
<input type="submit" value="Import File"/>
</div>
</fieldset>
}
@使用(Html.BeginForm(“Import”、“Persons”、FormMethod.Post、new{enctype=“multipart/formdata”}))
{
浏览。。。
}