如何使用 NodeJS 作为后端将图像(Base64 字符串)从 Android 上传到服务器?

How to upload image(Base64 String) to the server from Android with NodeJS as a back end?

我正在使用 Node js 从 Android 应用程序上传图像。结果非常难以预测。有时上传成功,有时失败。我在客户端使用 Retrofit 将数据发送到服务器 API,它由两个字段组成:1) Base64 字符串和 2) 图像名称。在服务器端我正在使用这段代码

app.post("/api/image", function (req, res) {
    var image = req.body.image;
    var name = req.body.name;
    var response = {};

    fs.writeFile(path, new Buffer(image, "base64"), function (err) {
        response.message = "success";
        res.send(response);
    });
});

有时我会收到成功消息,但大多数时候都是失败的。
可能是什么问题?在跳转到 Node Js 之前,我使用的是 PHP,相同的客户端代码在 PHP 上成功,但在 Node js 上失败。 注意:我正在使用 AWS。

您应该找到错误发生的位置:在 writeFile 调用之前或在中间件调用之前。另外,最好用细节来增强您的问题:实际发生了什么,过程在哪里失败,它是否创建文件等。

可能存在几个问题:

  • 正文太大(如果我是对的,正文解析器需要 100K)。
  • 正文已损坏(使用 md5 散列来确保)。

看来帕夏是对的。正文太大,因为某些图像比其他图像大,所以我按照此代码解决了我的问题。

var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: "50mb"}));
app.use(bodyParser.urlencoded({limit: "50mb", extended: true,parameterLimit:50000}));