我使用multer处理文件上传时有点过度训练。我想做的是:
1)已经完成,我管理将这些文件存储在tmp文件夹中。 2)据我所知,我需要先存储这些文件,然后将它们移动到我想要的位置(这是一个动态位置) 3)我想尽可能解析文件,否则文件应该只存储为资产。
我的问题:
如何在动态目标中存储(或移动)文件?
如何处理文件内容(例如将解析后的内容存储在数据库中)?
我的代码:
var storage = multer.diskStorage({
destination: function (req, file, cb) {
fs.mkdirsSync(config.fileHandler.uploadTempDir)
cb(null, config.fileHandler.uploadTempDir)
},
filename: function (req, file, cb) {
cb(null, Date.now() + '-' + file.originalname)
}
})
const upload = multer({ storage: storage })
var stringsUpload = upload.fields([{ name: 'sourceStrings[]', maxCount: 8 }])
router.post('/:projectId/update/sourcestrings', isLoggedIn, stringsUpload, processSourceStrings)
function processSourceStrings(req, res, next) {
var projectId = req.params.projectId
Project.findOne({ project_id: projectId }).populate('owner').then(function (project) {
if (!project)
return res.send(404, { error: "Couldn't find a project with this id" })
if (!isAllowedToEditProject(req, project))
return res.send(403, { error: "You are not allowed to edit this project" })
// Move files to the right destination
var targetpath = 'user/1/project/4/'
// Process file
return res.status(200).send()
})
}