【问题标题】:How do I get the file to be sent from the request body as a parameter?如何获取要从请求正文发送的文件作为参数?
【发布时间】:2020-04-13 05:46:01
【问题描述】:

我用node js写的post请求方法的一个例子如下。我从请求正文中获取了标题、主题、消息、电子邮件地址、名称等参数,但是如何从请求正文中获取要发送的文件作为参数?

我的 API 的 Multer 部分

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

表达js post请求:

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

【问题讨论】:

    标签: javascript node.js json mongodb


    【解决方案1】:

    您可以使用 multer(一个 nodejs 中间件)来处理文件上传,有很多可用的选项,但我认为 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);
    }
    

    【讨论】:

    • 我添加了我的代码并添加了我的问题你能再检查一次吗?
    • @okoreni,我已经编辑了我的答案,希望这会对你有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2017-06-23
    相关资源
    最近更新 更多