如何使用 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}));
我正在使用 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}));