【发布时间】:2016-04-26 21:48:55
【问题描述】:
我正在尝试将文件上传到磁盘中的特定目录。我正在使用 multer 库。据我了解,这段代码以及它现在的样子,当它收到请求时,它会从中获取文件并尝试保存它,并且它与请求的其余部分分开发生。假设目标函数(#1)有没有办法获得完全请求的访问权限。这是我的代码
var storage = multer.diskStorage({
destination: function (req, file, callback) {
console.log(req) // #1 here i dont see other fields from request
callback(null, './uploads')
},
filename: function (req, file, callback) {
callback(null, Date.now() + '-' + file.originalname)
}
})
var upload = multer({ storage: storage }).single('file')
router.post('/api/photos', function (req, res, next) {
upload(req, res, function(err) {
console.log(req) // here i see other fields from request like req.body.description
if (err) {return next(err)}
res.json(201)
})
});
我真正想做的是说multer。 '嘿,我希望你将文件保存在目录 /uploads/restOfThePat' 中。在请求中传递 restOfThePath 的位置。
我知道我可以稍后更改文件位置(没有尝试过,不知道它是否有效)。然而,这似乎有点老套,我不敢相信这是不可能的任何其他更清洁的方式。显然 multer 不是必须的,如果有其他库我想看看。
【问题讨论】:
-
无论如何这个文件保存在上传文件夹中,在 router.post('/api/photos') 里面你会得到请求的其余部分,使用 'req.body.form_field 检查字段' 在此之后,如果您想更改目标路径,请使用 fs 将文件从上传文件夹移动到您需要的任何位置
标签: javascript node.js express file-upload multer