首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转角投递文件

转角投递文件
EN

Stack Overflow用户
提问于 2018-03-28 15:43:47
回答 1查看 103关注 0票数 3

我试图把一个上传的文件在角5到c#控制器。当我调试我的应用程序并发布并命中控制器时,FromBody IFormFile文件总是为空。

它们是我需要传递的特定{responseType}吗?

角业务

代码语言:javascript
复制
public async upload(file: File) {
  try {
    return await this.http.post(this.baseUrl + "api/Blogs/Upload", file).toPromise();
  catch (error) {
    console.log(JSON.stringify(error));
  }
}

C#控制器

代码语言:javascript
复制
[HttpPost]
[Route("api/Blogs/Uplaod")]
public async Task<IActionResult> Upload([FromBody] IFormFile file) {
  // my save logic
}

为什么我的邮政身体总是空的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-28 16:29:45

您不能只是在post请求的正文中以角度传递文件。你必须把它作为formData发送

代码语言:javascript
复制
uploadFile(file: File) {
  var formData: FormData = new FormData();
  formData.append('file', file, file.name);

  var headers = new HttpHeaders().set('Accept', 'application/json');
  var options = { headers: headers };

  const req = new HttpRequest('POST', this.baseUrl + "api/Blogs/Upload", formData, options);
  return this.http.request(req);
}

在你的控制器里,得到这样的文件

代码语言:javascript
复制
[HttpPost]
[Route("api/Blogs/Upload")]
public async Task<IActionResult> Upload() {
  var myFile = HttpContext.Current.Request.Files(0)
  // you can append more than 1 file in angular, but if you know its only ever 1 file, you can just get the `Files(0)` at that index of zero.
  // my save logic
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49538825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档