簡體   English   中英

使用multer上傳NodeJS文件

[英]NodeJS file upload with multer

我正在嘗試將文件上傳到磁盤中的特定目錄。 我正在使用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)
   })
});

我真正想做的是說穆爾特。 “嘿,我希望您將文件保存在目錄/ uploads / restOfThePat中”。 在請求中傳遞restOfThePath的位置。

我知道以后可以更改文件位置(didnt嘗試過此操作,不知道它是否有效)。 但是,這似乎有點駭人聽聞,而且我無法相信這是不可能采用其他更清潔的方法了。 顯然,multer不是必須的,如果還有其他我想看的庫。

你可以這樣做:

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

它的工作原理就像一種魅力……

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM