将Aurelia的数据和文件发布到ASP.NET webapi

我正在尝试将带有文件上传的输入添加到我的应用程序中。

这是我的视图,有两个输入,一个文本和一个文件:

 

在我的webapi中,我有这个代码,我从这里复制并粘贴:

 public class ImportLanguageController : ApiController { public async Task Post() { // Check if the request contains multipart/form-data. if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } string root = HttpContext.Current.Server.MapPath("~/App_Data"); var provider = new MultipartFormDataStreamProvider(root); try { // Read the form data. await Request.Content.ReadAsMultipartAsync(provider); // This illustrates how to get the file names. foreach (MultipartFileData file in provider.FileData) { //Trace.WriteLine(file.Headers.ContentDisposition.FileName); //Trace.WriteLine("Server file path: " + file.LocalFileName); } return Request.CreateResponse(HttpStatusCode.OK); } catch (System.Exception e) { return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e); } } } 

最后我在Aurelia有我的视图模型:

 import {inject} from 'aurelia-framework'; import {HttpClient, json} from 'aurelia-fetch-client'; @inject(HttpClient) export class Import { languageKey = null; files = null; constructor(http){ http.configure(config => { config .useStandardConfiguration(); }); this.http = http; } doImport() { //What goes here?? } } 

所以我的问题是,我的函数doImport什么逻辑? 我不确定webapi中我的控制器方法中的代码是否正确,随时可以对此进行评论。

这应该可以帮助您入门:

 doImport() { var form = new FormData() form.append('language', this.languageKey) form.append('file', this.files) //Edit, try this if the first line dont work for you //form.append('file', this.files[0]) this.http.fetch('YOUR_URL', { method: 'post', body: form }) .then( response => { // do whatever here }); } 

根据您提供的webapi响应(如果有),您可能希望使用以下内容:

 .then( response => response.json() ) .then( response => { // do whatever here }); 

我应该提到的一件事是fetch使用COR,所以如果你得到任何CORS错误,你可能需要在服务器端启用它们。

这是Aurelia部分的gist.run(除非您更改URL,否则发布将不起作用): https ://gist.run/?id = 6aa96b19bb75f727271fb061a260f945