在 Flutter 中发送 API 请求。图片上传

Posted

技术标签:

【中文标题】在 Flutter 中发送 API 请求。图片上传【英文标题】:Sending an API request in Flutter. Image Upload 【发布时间】:2021-04-25 23:36:06 【问题描述】:

我正在尝试使用 Flutter 向 DeepApi Toonify 网站发送 API 请求,但我遇到了一些问题,因为我不知道该怎么做。

这就是 toonify API 请求的样子

curl \
-F 'image=YOUR_IMAGE_URL' \
-H 'api-key:quickstart-QUdJIGlzIGNvbWluZy4uLi4K' \
https://api.deepai.org/api/toonify 

这就是我现在拥有的。

var dioRequest = new Dio();

FormData formData = FormData.fromMap(
  "file": await MultipartFile.fromFile(pickedFile.path,filename: pickedFile.path.split('/').last)
);


var response = await dioRequest.post(
  'https://api.deepai.org/api/toonify',
  data: formData,
  options: Options(
    headers: 
      'api-key': 'MY API KEY'
    
  )
);

我做错了什么?

【问题讨论】:

尝试使用similar question的一些解决方案。 您能告诉我们您遇到的错误吗? @fartem 非常感谢。其中一种解决方案对我有用。 【参考方案1】:

我找到了适合我的解决方案。 这是使用文件发送经过身份验证的 API 请求的正确方法。

var request = http.MultipartRequest("POST", Uri.parse("<URL>"));
//add Headers
request.headers['Api-Key'] = 'Your API key';
//create multipart using filepath, string or bytes
var pic = await http.MultipartFile.fromPath("image", file.path);

//add multipart to request
request.files.add(pic);
var response = await request.send();
var responseData = await response.stream.toBytes();
var responseString = String.fromCharCodes(responseData);
print(responseString);

【讨论】:

以上是关于在 Flutter 中发送 API 请求。图片上传的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Discord API 和 Python 请求发送图片

向 API 请求 formData,上传图片时在 axios 中出现“网络错误”

如何使用 HTTP 将多张图片上传到 Flutter 中的 Rest API?

Flutter 图片上传问题

如何在 MySQL 中使用 Flutter 和 php 上传图片

Flutter 中使用 Http Post 上传正文