如何获取要从请求正文发送的文件作为参数?

时间:2020-04-13 05:46:01

标签: javascript node.js json mongodb

我用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)
    });
});

1 个答案:

答案 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);
}
相关问题