使用multer

时间:2017-06-15 21:02:00

标签: node.js express multer

我使用multer处理文件上传时有点过度训练。我想做的是:

  1. 通过ajax上传一个或多个文件
  2. 将这些文件存储在动态目标文件夹中
  3. 使用特定格式(.json / .xml / .txt)处理内容文件
  4. 1)已经完成,我管理将这些文件存储在tmp文件夹中。 2)据我所知,我需要先存储这些文件,然后将它们移动到我想要的位置(这是一个动态位置) 3)我想尽可能解析文件,否则文件应该只存储为资产。

    我的问题:

    1. 如何在动态目标中存储(或移动)文件?

    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()
          })
      }
      

0 个答案:

没有答案