【发布时间】:2019-09-15 20:53:34
【问题描述】:
我实际上正在使用 .NET Core 开发一个 Angular 6 应用程序,在这个应用程序中我有一个用户窗体,用户可以在其中输入他的信息和一张图片。
不带图片的表单提交效果很好,不带表单的图片提交也可以。 但是现在我想进行全局提交,但是我收到了 400 错误:
“无法创建 Microsoft.AspNetCore.Http.IFormFile 类型的实例。类型是接口或抽象类,无法实例化”
我认为问题在于我的服务发布方法...
这是我的 userService 发布方法:
postUser(userFormAdd: FormGroup,file): Observable<Boolean> {
let input = new FormData();
input.append("file", file);
let data = {
user: userFormAdd.value,
fileData: input,
};
return this.http.post<Boolean>(AppSettings.URL + "/users/", data);
}
我在 UserViewModel 中结合了用户模型和文件:
public class UserCreationViewModel
{
public User user { get; set; }
public IFormFile fileData { get; set; }
}
我的控制器 post 方法甚至没有被调用:
[HttpPost]
public async Task<IActionResult> PostUser([FromBody]UserCreationViewModel userViewModel)
{
var test = await _siteService.CreateUser(userViewModel);
return Ok();
}
我希望通过 IFormFile 和我的控制器方法中的 Form 值来检索我的图片,但实际上我只有 400 错误
提前致谢
【问题讨论】:
-
您是否尝试将用户的每个属性发送到文件旁边,而不是发送用户对象? Post => 用户名、密码、文件而不是 Post => 用户、文件数据?