2017-10-13 60 views
-1

我使用此代碼「multer」將文件上傳到我的服務器。即使我有限制filesize它只是忽略它並上傳文件。Nodejs - 捕捉多個文件大小錯誤

const multer = require("multer"); 
const path = require("path"); 
const storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, "uploads/"); 
    }, 
    limits: { 
     fileSize: 1024 * 1024 
    } 
}); 

const upload = multer(
{ 
    storage: storage 
} 
).single("file"); 

router.post("/files/postfile", function (req: any, res: any, next) { 

    upload(req, res, function (err) { 
     if (err) { 
      return res.json({error: err}); 
     } 
     return res.json({success: true}); 
    }); 

}); 

回答

1
const upload = multer({ 
    storage: storage, 
    limits: { 
     fileSize: 1024 * 1024 
    } 
}).single("file"); 

取出limitsmulter.diskStorage

+0

謝謝......我在等待5分鐘(計算器規則)給你檢查你的答案.... – Michalis

+0

很高興幫助:) –

0

你的代碼是非常低效的。

const multer = require("multer"); 
const path = require("path"); 
const storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, "uploads/"); 
    } 
}); 

const upload = multer({ 
    storage: storage, 
    limits: { 
     fileSize: 1024 * 1024 
    } 
}); 

router.post("/files/postfile", upload.single("file"); function (req: any, res: any, next) { 
    // . . . . code . . . . 

}); 

通過使用中間件,你可以寫高效的代碼 我推薦這種方法。 如果在調用multer.diskStorage()時使用filename屬性,則可以創建文件名chage。

destination: function (req, file, cb) { 
     cb(null, "uploads/"); 
    }, 
    filename: function(req, file, cb){ 
     cb(null, 'unique_name.jpg'); # example: timestamp, utc, etc 
    }, 
    limits: { 
     fileSize: 1024 * 1024 
    } 

文件名可以重複。

+0

和我如何捕捉我的路線內的錯誤?首先我使用了像你這樣的代碼,但我找不到一種方法來捕捉路由中的錯誤 – Michalis

+0

我從官方網站捕捉錯誤的例子。 https://github.com/expressjs/multer#error-handling – Michalis

+0

你想錯誤處理? –