【问题标题】:NodeJS file upload with multer使用 multer 上传 NodeJS 文件
【发布时间】: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


【解决方案1】:

你可以这样做:

var storage = multer.diskStorage({
   destination: function (req, file, callback) {
      console.log(req);
      callback(null, req.body.what_you_want);
    },
    filename: function (req, file, callback) {
       callback(null, Date.now() + '-' + file.originalname);
    }
})

var upload = multer({ storage: storage });

router.post('/api/photos', upload.single('the_name') 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)
   })
});

它就像一个魅力......

【讨论】:

    猜你喜欢
    • 2018-07-21
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2017-10-09
    • 1970-01-01
    • 2016-06-03
    相关资源
    最近更新 更多