我试图接收文件并将其存储在multer存储中 Node js code
enter code here
app.post('/ createLicence',upload.single('photo'),function(req,res,next){ //任何逻辑都在这里
console.log("filename" ,req.body.name)
if (!req.file) {
console.log("No file received");
return res.send({
success: false
});
} else {
console.log('file received');
var function_name = 'createLicence'
var arguments_array = [req.file.path,'Raghav','Mumbai','Approved']
invoke = require('/Users/sanjeev.natarajan/fabric-samples/fabcar/invoke.js');
invoke.invokechaincode(function_name,arguments_array)
return res.send({
success: true
})
}
});
答案 0 :(得分:0)
- 来自:https://www.npmjs.com/package/multer
为了使用multer包,首先必须定义一些参数,以便它可以在fileDirectory上使用。
在您的server.js中:
let multer = require('multer');
let storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, '/path/to/storage/')
},
filename: function(req, file, callback) {
callback(null, file.originalname + '-' + Date.now());
}
});
let upload = multer({
storage: storage
});
现在,配置您的路线
router.route('/your/payload')
.post(authController.isAuthenticated, upload.any(), albumController.postFile)
请注意,upload.any()
将允许您一次上传多个不同格式的文件。随时根据需要使用其他任何类型的upload.method()。
从这一点来看,multer
已经在工作,但是您可能希望跟踪服务器上上传的文件。
因此,在您自己的模块中,逻辑很简单:
(我假设您使用猫鼬模型是因为您没有提供太多信息,但是无论如何这都不是相关的部分)
exports.postFile = async (req, res) => {
if (!req || !req.files || !req.files[0]) return res.status(400).send("Bad request.");
for (let i = 0; req.files[i]; i++) {
await File.create({
path: req.files[i],
originalName: req.files[i].originalName,
mimetype: req.files[i].mimetype,
owner: req.user.userId
}, (err, file) => {
if (err) console.log("Something went wrong: " + err); else {
// Do something with file
}
});
}
return res.status(418).send("I'm a teapot.");
}
此配置和中间件仅用于测试目的,切勿让任何人在未仔细处理该上载过程(文件完整性,资源管理等)的情况下将某些内容上载到您的服务器。开放的上传系统可以成为直接进入服务器的后门。
希望这会有所帮助, 问候。