我用node js编写的post request方法的示例如下。我从请求正文中获取了诸如标题,主题,消息,电子邮件地址,名称之类的参数,但是如何从请求正文中获取要发送的文件作为参数?
我的API的错误部分
const multer = require('multer');
const storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, './tosign');
},
filename: function (req, file, cb) {
cb(null , file.originalname);
}
});
const upload = multer({ storage: storage });
Express js发布请求:
router.post('/sign',(req,res)=>{
res.send('Sign request is called');
var title = req.title;
var subject = req.subject;
var message = req.message;
var email_address = req.email_address;
var name = req.name;
var file = req.files.file;
const opts = {
test_mode: 1,
title: title,
subject: subject,
message: message,
signers: [
{
email_address: email_address,
name: name
}
],
//TODO - files from post request
files: ['file.pdf']
};
hellosign.signatureRequest.send(opts).then((res) => {
console.log(res);
}).catch((err) => {
console.log(err)
});
});
答案 0 :(得分:0)
您可以使用multer(这是一个Node.js中间件)来处理文件上传,有很多可用的选项,但我认为multer是最可靠的选项。您可以在下面提到的链接中找到它: https://www.npmjs.com/package/multer
集成后,您将可以在req.files中获取文件
尝试下面提到的代码:
const multer = require('multer');
const upload = multer({ dest: "src/uploads" });
// In case of file array
const uploadConfig = upload.array("profilePic", 12);
// In case of single file you can use
const uploadConfig = upload.single("profilePic");
router.use(uploadConfig);
router.post('/sign',(req,res)=>{
// req.file if you have used upload.single
// req.files if you have used array
console.log('req', req.file);
}