繁体   English   中英

我使用节点 js multer 遇到文件上传问题

[英]I'm getting file upload problem using node js multer

我想使用 Postman 向节点 js api 发送请求,但找不到文件名。 var file = I get errors in these parts. req.files; var fileName = file.name; 我该如何解决这个问题?

POSTMAN 请求

日志

body: [Object: null prototype] {
    title: 'Test PDF Sign via Node Server POSTMAN',
    subject: 'Test PDF Sign via Node Server POSTMAN',
    message: 'Please sign this pdf. POSTMAN',
    email_address: 'xxx@gmail.com',
    name: 'Mr. XXX'
  },
  route: Route {
    path: '/sign',
    stack: [ [Layer], [Layer] ],
    methods: { post: true }
  },
  file: {
    fieldname: 'file',
    originalname: 'nda.pdf',
    encoding: '7bit',
    mimetype: 'application/pdf',
    destination: './tosign',
    filename: 'nda.pdf',
    path: 'tosign/nda.pdf',
    size: 121522
  },
  [Symbol(kCapture)]: false
}
TypeError: Cannot read property 'name' of undefined
    at /Desktop/nodejs/helloSignDemo/routes/index.js:85:25
    at Layer.handle [as handle_request] (/Desktop/nodejs/helloSignDemo/node_modules/express/lib/router/layer.js:95:5)
    at next (/Desktop/nodejs/helloSignDemo/node_modules/express/lib/router/route.js:137:13)
    at Immediate.<anonymous> (/Desktop/nodejs/helloSignDemo/node_modules/multer/lib/make-middleware.js:53:37)
    at processImmediate (internal/timers.js:458:21)

签名请求 API

const fs = require('fs');
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 });


router.post('/sign', upload.single('file'), (req,res)=>{

    res.send('Sign request is called');
    console.log('Sign request is called');

    console.log(req);

    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;
    var fileName = file.name;

    console.log(fileName);

    const opts = {
        test_mode: 1,
        title: title,
        subject: subject,
        message: message,
        signers: [
            {
                email_address: email_address,
                name: name
            }
        ],

        files: ['./tosign/'+fileName]
    };

    console.log(opts);

    hellosign.signatureRequest.send(opts).then((res) => {
        console.log(res);
        console.log('Signature Request Id: '+signatureRequestId);
    }).catch((err) => {
        console.log(err)
    });
});

尝试var file = req.file; ,因为您发送的文件不是 postman 正文中的文件

这是因为file object 中没有name字段。
将您的代码更改为var fileName = file.originalname;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM