【问题标题】:Upload file into ASP.NET Core Web API将文件上传到 ASP.NET Core Web API
【发布时间】:2021-07-07 16:42:25
【问题描述】:

我们有一个前端 Flutter 应用程序,它应该将文件发送到我们的后端(ASP.NET Core Web API)。 问题是:控制器应该如何构造?我相信它应该是一个POST方法,但是如何在后端获取这个文件。

附:所有请求都以 JSON 格式发送到我们的 API。

【问题讨论】:

  • 一个 Post 是当发送请求中有一个正文时(它可以是客户端发送到服务器或服务器发送到客户端)。控制器用于解析接收消息(来自客户端的服务器的消息,或来自服务器的客户端的消息)。控制器总是解析 GET(不是 Post)来回答您的问题。

标签: c# asp.net asp.net-core asp.net-web-api asp.net-core-webapi


【解决方案1】:

在dotnet核心控制器中可以使用IFormFile接口获取文件,

[HttpPost("upload-file")]
public async Task<IActionResult> UploadFile([FromQuery] IFormFile file){
    
    if(file.Length > 0){
       // Do whatever you want with your file here
       // e.g.: upload it to somewhere like Azure blob or AWS S3
    }

    //TODO: Save file description and image URL etc to database.
}

在 Flutter 中,除了常规文本值之外,您还需要发送 Multipart POST 请求以包含具有二进制内容(图像、各种文档等)的文件。

import 'package:http/http.dart' as http;

  Future<String> uploadImage(filename, url) async {
    var request = http.MultipartRequest('POST', Uri.parse(url));
    request.files.add(
     http.MultipartFile.fromBytes(
      'file',
      File(filename).readAsBytesSync(),
      filename: filename.split("/").last
      )
    );
    var res = await request.send();
    return res;
  }

【讨论】:

  • 非常感谢!
猜你喜欢
  • 2016-11-14
  • 2020-04-08
  • 1970-01-01
  • 2023-01-21
  • 2021-08-09
  • 2020-08-25
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
相关资源
最近更新 更多