如何在Flutter中使用JSON通过POST发送图片?

7
我正在构建一个Flutter应用程序,其中使用图像选择器从图库捕获或选择图像,但我很难从客户端将该图像POST到我的服务器。据我所知,通过将图像文件转换为字节并将其作为BASE64发送,可以通过JSON发送本地图像。
import 'dart:convert';
import 'package:crypto/crypto.dart';

Future<Map> _avatarSubmit() async {
    String url = api + '/api/account';
    http.Response response = await http.post(Uri.encodeFull(url), headers: {
      "Accept": "application/json",
      "Cookie": "MYCOOKIE=" + sessionCookie2 + "; MYTOKENS=" + sessionCookie3,
      "Content-type": "multipart/form-data",
    }, body: {
      "image": "",
    });
    Map content = JSON.decode(response.body);
    return content;
  }

我的问题是如何将设备中的图像文件转换为字节,以便我可以使用crypto插件将其转换为BASE64?
提前致谢。
1个回答

25

由于image picker插件提供了图像的文件路径,因此您可以使用来自dart:io的File类加载图像并使用dart:convert中的BASE64将其转换为BASE64字符串。

以下是如何实现的:

import 'dart:io';
import 'dart:convert';

File imageFile = new File(imageFilePath);
List<int> imageBytes = imageFile.readAsBytesSync();
String base64Image = BASE64.encode(imageBytes);

谢谢。是的,这就是正确的方法。我只需要确保使用 imagePath.toString()。 - Ems

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接