javascript - 我使用节点 js multer 遇到文件上传问题
问题描述
我想使用 Postman 向下面提到的节点 js api 发送请求,但找不到文件名。我该如何解决这个问题var file = I get errors in these parts. req.files;
?var fileName = file.name;
日志
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;
,因为您发送的是文件而不是邮递员正文中的文件
推荐阅读
- git - git 重置为上一次提交,然后推送
- multi-factor-authentication - 如何制作 Authenticator App 智能 URL
- android - 为什么 Environment.getExternalStorageDirectory() 在缓存文件夹中创建目录
- mysql - 我们可以在本地 MySQL 服务器和 Azure Database for MySQL 之间设置数据库同步吗
- javascript - 有没有办法在不使用画布的情况下在 JavaScript 中合并图像?
- google-sheets - Google 表格显示无法获取 URL
- react-native - 隐藏在 DrawerNavigator 下的自定义 TabBarIcon - React Navigation v5
- python - Django 子查询,注释。有什么方法可以连接三个表进行查询以查找 django 中某个字段的总和(查询集 api)?
- android - 使用 Agora 自动创建频道,无需管理服务器和令牌
- python - 具有 2 个不同类别的 OOP 的 Tkinter,带有“循环导入”错误