如何将内存中的图像上传为 Flutter web 中 body 上的二进制图像?

Posted

技术标签:

【中文标题】如何将内存中的图像上传为 Flutter web 中 body 上的二进制图像?【英文标题】:How to upload an image in memory, as a binary image on the body in Flutter web? 【发布时间】:2021-04-12 15:46:36 【问题描述】:

我想通过 POST 直接在请求正文上上传图像二进制文件,而不使用表单数据(因为我无权修改服务器端,接收字典或类似的东西:图像:[ bla bla]),并且不使用 File 对象,因为目前您需要一个路径来定义它而我没有,我只有使用以下 Flutter 插件将二进制文件保存在内存中来获取它:

我假装在邮递员身上复制这种行为:

【问题讨论】:

【参考方案1】:

所以在这篇文章的那一刻,我尝试使用DIO 库,但目前它们提供的所有不同方法都对我不起作用。

在有人为颤振本身(不是移动)提出的类似问题之后,提供的答案之一是:@Mehul Prajapati 这里:https://***.com/a/64604174/8377232。

我做了以下事情:

代替 Dio 库,使用 http 库,如下所示:

Future<void> _uploadImage(Uint8List binaryImage) async 
Response response = await http.post(
  Uri.parse('<your url here> '),
  headers: 
    'Content-Type': "text/plain",
    'Accept': "*/*",
    'Content-Length': binaryImage.toString(),
    'Connection': 'keep-alive',
  ,
  body: binaryImage,
);

为了获得 binaryImage 本身(它是一个 int8 数字数组),我做了以下操作: 这是我发送给上述方法的值,您可能还需要根据服务器 API 的需要修改内容类型:修改为“image/jpeg”或任何需要的内容。

谢谢。

【讨论】:

以上是关于如何将内存中的图像上传为 Flutter web 中 body 上的二进制图像?的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter Web 中上传多个文件(图像)

如何将多个图像上传到 Flutter 中的 REST API?

Flutter web - 无法将图像上传到 Firebase 存储

将图像/文件上传到 Strapi (Flutter Web)

如何从 Flutter-web 中的小部件创建图像?

将用户上传到 Flutter Web 的图片存储为实际的 .jpg 文件