使用asp.net core 2.0中的angular 5进行文件上传.文件为空

San*_*isy 5 asp.net asp.net-mvc typescript asp.net-core angular

我,我正在尝试使用asp.net core 2.0中的angular 5上传文件.

这是我的服务器端代码.

 public class QuestionViewModel
    {
        public Guid QuestionId { get; set; }
        public string QuestionText { get; set; }
        public DateTime CreateDate { get; set; }
        public string PictureUrl { get; set; }
        public FormFile FileUpload { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

这里是控制器方法.

[HttpPost]
        [AllowAnonymous]
        public JsonResult QuestionPhotoPost([FromBody] QuestionViewModel model)
        {
            GenericResponseObject<List<QuestionViewModel>> genericResponseObject = new GenericResponseObject<List<QuestionViewModel>>();
            genericResponseObject.IsSuccess = false;
            genericResponseObject.Message = ConstaintStingValue.TagConnectionFailed;
            List<QuestionViewModel> questionViewModel = new List<QuestionViewModel>();
            return Json(genericResponseObject);
        }
Run Code Online (Sandbox Code Playgroud)

键入Script类

export class Data {
    QuestionText: string = "";
    FileUpload: File;
}
Run Code Online (Sandbox Code Playgroud)

这是http电话.调用调用控制器方法.

public QuestionPostHttpCall(_loginVM: QuestionVmData): Observable<QuestionPhotoViewModel> {
        console.log(_loginVM)
        const headers = new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8');

        return this._httpClientModule.post<QuestionPhotoViewModel>(this.questionPhoto, _loginVM, { headers});
    }
Run Code Online (Sandbox Code Playgroud)

这是发送到服务器之前的数据.

图片发送数据

但是在控制器中,文件的值为null.

文件界面中的null值

另一个属性绑定到控制器参数,只有文件没有绑定.

任何人都可以告诉我我在哪里,做错了.参考资料 - ASP.NET Core 2.0和Angular 4.3文件上传进度

Kli*_* Ru 0

您需要发送诸如 multipart/form-data 之类的文件。

upload(file: File, questionText: string): Observable<FileResponseModel> {
  const url: string = Urls.uploadFiles();

  const formData: FormData = new FormData();
   formData.append('attachment', file, file.name);
   formData.append('questionText', questionText);

  const options = {
   headers: new HttpHeaders().set('enctype', 'multipart/form-data')
  };

  return this.httpService.post(url, formData, options);
}
Run Code Online (Sandbox Code Playgroud)