我想在POST
的正文中上传一个二进制文件。
我不想使用multipart/form-data
。
(据我所知multipart/form-data
是一种适用于Web应用程序的易于使用的技术,但不适用于移动应用程序。我没有Web应用程序,我只是在构建移动应用程序。)< / p>
我尝试使用busboy,但在非multipart/form-data
的上传中找不到任何内容。 express-fileupload
也使用相同的AFAIK。
答案 0 :(得分:1)
因此,如果我理解正确,您想创建一个路由,该路由将用于将文件上传到服务器。一种方法是将body-parser表达式中间件与写流结合使用:
const bodyparser = require('body-parser');
const express = require('express');
const fs = require('fs');
const app = express();
app.post('/upload/:image', bodyparser.raw({
limit: '10mb',
type: 'image/*'
}), (req, res) => {
const image = req.params.image;
const fd = fs.createWriteStream(`[SERVER_UPLOAD_PATH]/${image}`, {
flags: "w+",
encoding: "binary"
});
fd.end(req.body);
fd.on('close', () => res.send({status: 'OK'});
});
发送以下请求会将文件上传到[SERVER_UPLOAD_PATH]:
curl -X POST -H 'Content-Type: image/png' --data-binary @[image-path]/image.png http://[server-url]/upload/image.png
以上示例用于将图像上传到服务器,但是您可以相应地对其进行修改。请注意,您将需要检查文件类型,以确保用户仅上传他们应该上传的文件类型。