首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在multer中捕获错误

如何在multer中捕获错误
EN

Stack Overflow用户
提问于 2019-12-04 18:04:44
回答 1查看 2.7K关注 0票数 1

我读过multer的文档。但是我在代码中的当前设置是不同的,这使得我很难理解如何处理错误。它现在很重要,因为它发生了(只有一次),一个文件没有存储在服务器上,但代码继续在数据库中保存信息,就像文件的存储工作一样。但事实可能并非如此。

代码语言:javascript
运行
复制
const multer = require('multer');

var docPath = "path_to_disk_where_to_store_files";

var storage = multer.diskStorage({
    inMemory: true,
    destination: function (request, file, callback) {
        callback(null, docPath);
    },
    filename: function (request, file, callback) {
        //Just a function that creates an unique name with timestamp
        renamedFile = helpers.createUniqueName(file.originalname);
        callback(null, renamedFile);
    }
});

var fileFilter = function (req, file, cb) {
    var path = require('path');
    var ext = path.extname(file.originalname);
    if (file.mimetype !== 'application/pdf' || ext.toLowerCase() != '.pdf') {
        req.fileValidationError = 'goes wrong on the mimetype';
        return cb(null, false, new Error('goes wrong on the mimetype'));
    }
    cb(null, true);
};

const multerUploader = multer({storage: storage, fileFilter: fileFilter, limits: { fileSize: maxSize }});

router.post('/save_document',[multerUploader.single('file'),saveDocumentInDb]);

我真的不明白用于检查上传是否出错的if语句适用于哪里。

EN

回答 1

Stack Overflow用户

发布于 2019-12-04 18:34:59

使用multer时,请参考以下错误处理:https://github.com/expressjs/multer#error-handling

您的实现将如下所示:

代码语言:javascript
运行
复制
const multerUploader = multer({storage: storage, fileFilter: fileFilter, limits: { fileSize: maxSize }});
const upload = multerUploader.single('file');
router.post('/save_document', function (req, res) {
  upload(req, res, function (err) {
    if (err instanceof multer.MulterError) {
      // A Multer error occurred when uploading.
    } else if (err) {
      // An unknown error occurred when uploading.
    }

    // Everything went fine and save document in DB here.
  })
})
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59173411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档