亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

NodeJS Multer 無法捕獲錯誤

NodeJS Multer 無法捕獲錯誤

Helenr 2023-07-29 16:35:01
如何捕獲調用的錯誤并返回 res 狀態消息?我無法捕獲 userController.uploadFile 中的任何錯誤,并且如果我嘗試在 paths.post 中執行 upload(req,res (err)),則未定義 req。var storage = multer.diskStorage({    destination(req, file, cb) {        cb(null, url);    },    filename: function (req, file, cb) {        cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))    }}).single('file');let upload = multer({    storage: storage,    limits: { fileSize: maxSize },    fileFilter: (req, file, cb) => {        console.log(file);        if (file.mimetype !== 'image/jpeg' || file.mimetype !== 'image/png') {          return cb(new Error('Only jpeg images allowed'))        }            cb(null, true)      }});routes.post('/fileupload', upload, userController.uploadFile);
查看完整描述

1 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

我認為我們可以通過一些調整來使其發揮作用。我已經進行了這些更改并用一些圖像進行了測試。


您的用戶控制器看起來會有點不同,但類似的東西應該可以工作。


我已經更新為將任何文件太大錯誤傳遞給控制器,這將再次出現在 req.uploadError 屬性中,因此您可以根據需要進行處理。


const userController = { 

    uploadFile(req, res) {

        if (req.uploadError) {

            res.status(400).send("An error occurred - " + req.uploadError.message);

        } else { 

            res.status(201).send("All good");

        }

    }

}


var storage = multer.diskStorage({

    destination(req, file, cb) {

        cb(null, url);

    },

    filename: function (req, file, cb) {

        cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))

    }

});


let upload = multer({

    storage: storage,

    limits: { fileSize: maxSize },

    fileFilter: (req, file, cb) => {

        console.log(file);

        if (file.mimetype !== 'image/jpeg' && file.mimetype !== 'image/png') {

            cb(new Error('Only jpeg or png images allowed'));

        } else {

            cb(null, true);

        }

    }

}).single('file');


routes.post('/fileupload', (req, res, next) => { 

    upload(req, res, err => {

        req.uploadError = err;

        next();

    })

}, userController.uploadFile);


查看完整回答
反對 回復 2023-07-29
  • 1 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號