从 Flutter 应用程序向 nodejs 服务器发送图像

Posted

技术标签:

【中文标题】从 Flutter 应用程序向 nodejs 服务器发送图像【英文标题】:Sending an image to nodejs server from a flutter app 【发布时间】:2020-12-15 11:15:41 【问题描述】:

我正在尝试从 Flutter 应用程序将图像发送到节点 js rest api,并且在服务器上没有收到图像(它在网络版本上工作正常,但在移动设备上文件没有被上传) Multer 用于在服务器端和客户端处理 multipart/form-data 我正在这样做

    var request = MultipartRequest(
    'PUT',
    Uri.parse(
      "URL",
    ));
request.headers['authorization'] = token;
request.headers['Content-Type'] = 'multipart/form-data';
request.files.add(MultipartFile(
  'userUrl',
  image.readAsBytes().asStream(),
  image.lengthSync(),
));

StreamedResponse res = await request.send();

image 是一个 File 对象,我使用的是 http 包,但我也尝试使用 dio,结果相同。

【问题讨论】:

【参考方案1】:

我找到了问题,只是mimetype丢失了:

    String fileName = image.path.split('/').last;
final mimeTypeData =
    lookupMimeType(image.path, headerBytes: [0xFF, 0xD8]).split('/');
var request = MultipartRequest(
    'PUT',
    Uri.parse(
      "url",
    ));
request.headers['authorization'] = token;
request.headers['Content-Type'] = 'multipart/form-data';
request.files.add(await MultipartFile.fromPath('userUrl', image.path,
    contentType: MediaType(mimeTypeData[0], mimeTypeData[1])));

StreamedResponse res = await request.send();

【讨论】:

以上是关于从 Flutter 应用程序向 nodejs 服务器发送图像的主要内容,如果未能解决你的问题,请参考以下文章

在开发中设置用于从 Angular 向 NodeJS 发送 API 请求的服务器端口

如何在 Flutter Web 应用中使用 NodeJS 包

Flutter 物理 iOS 设备无法向我的本地 asp.net 服务器发出 api 请求

如何为 Flutter 移动应用程序提供与 nodeJS 网站相同的后端?

从 nodejs 向 FFmpeg 发送 2 个流

用文件向服务器发送请求