【问题标题】:Flutter post to nodejs API with image file and string field as json stringFlutter 将图像文件和字符串字段作为 json 字符串发布到 nodejs API
【发布时间】:2018-05-03 19:46:21
【问题描述】:

希望找到一个使用 Flutter 向 Node.js 发送表单帖子并传递 JSON 和图像文件的字符串的示例。

我一直在尝试http.MultipartRequest,但是节点服务在文件或字段中没有得到任何东西。

不确定我做错了什么,所以任何指导都会很棒。

var _url = Uri.parse('http://$baseurl/chat/messages/send');

var request = new http.MultipartRequest('POST', _url);
request.fields['json'] = json;
request.files.add(new http.MultipartFile.fromString(widget.mychat.msgkey, myimagefile.path));

我错过了更简单的方法吗?尝试对图像进行 BASE64 编码并添加为 JSON 中的字符串,但即使我更改了 nginx 允许的客户端请求量,服务器仍然崩溃。我需要它来处理从移动设备发送的图像或视频。

【问题讨论】:

  • 你搜索过 Dart 吗? Flutter 并没有什么特别之处,只是 Dart Web 回答可能不起作用,但 Flutter 使 HTTP 请求与 Dart 控制台或服务器应用程序一样。
  • 关于服务器崩溃的任何信息?错误输出,堆栈跟踪,...?
  • 我从 dart 得到了当前的例子,只是希望有人在做颤振并尝试同样的事情。
  • 一旦我把它推送到服务器,继续从节点收到一个epipe错误,它不会将它存储在数据库中。
  • 你能发布具体的错误信息吗?

标签: dart flutter


【解决方案1】:

我遇到了完全相同的问题。问题不在于 MultipartRequest 而是 nodejs 服务器。 您在 nodejs API 中使用的 body-parser 模块无法处理 multipart/form-data ,它只能处理 x-www-form-urlencoded

解决方案是:你必须在你的 nodejs API 中使用像 multer 这样的模块

const multer  = require('multer')
let upload  = multer({ storage: multer.memoryStorage() });

router.route('/signup').post(upload.single('avatar'),function (req, res) {
    console.log('signup page');
    console.log(req.file);
    console.log(req.body);
    //res.status(200).json({"success": "Signup page"});
    res.end('hello world');
});

在这里找到了一个不错的解决方案http://derpturkey.com/node-multipart-form-data-explained/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-02
    • 2019-04-11
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多