【问题标题】:How Handle File Size Exceeds Error in multer node.jsmulter node.js中如何处理文件大小超过错误
【发布时间】:2016-06-02 14:47:44
【问题描述】:

如果文件大小超过文件上传中的multer,如何发送响应。当上传的文件大于限制时,应用程序崩溃。我尝试使用 uploadFileSize 检查 req.file.size ,不幸的是它不起作用。

var uploadOptions = multer({
dest: uploadDir,
limits: {fileSize: uploadFileSize},
}).single('file');

app.post('/upload', function (req, res) {


    uploadOptions(req, res, function (err) {

            var temp = req.file.path;
            var file = uploadDir + req.file.originalname;

            var source = fs.createReadStream(temp);
            var destination = fs.createWriteStream(file);

            source.pipe(destination);
            fs.unlink(temp);

            source.on('end', function () {
                var result = {
                    'status': 'sucess',
                    'file': file
                };

                fs.chmod(file, 0777);

                res.send(result);

            });

            source.on('error', function (err) {
                var result = {
                    'status': 'Fail',
                    'error': err
                };

                res.send(result);

            });

        if (err) {

            var result = {
                'status': 'Fail',
                'error': err
            };
            return res.end(result);
        }

    }); 
});

【问题讨论】:

    标签: javascript node.js express multer


    【解决方案1】:

    uploadOptions 的回调在 err 对象中返回 code :'LIMIT_FILE_SIZE'。你可以这样处理。此外,您应该在开始处理文件之前检查错误。

    uploadOptions(req, res, function (err) {
        if (err) {
            if (err.code === 'LIMIT_FILE_SIZE') {
                // 'File too large'
            } else {
                var result = {
                    'status': 'Fail',
                    'error': err
                };
                res.end(result);
            }
        } else {
            var temp = req.file.path;
            var file = uploadDir + req.file.originalname;
            var source = fs.createReadStream(temp);
            var destination = fs.createWriteStream(file);
            source.pipe(destination);
            fs.unlink(temp);
            source.on('end', function () {
                var result = {
                    'status': 'sucess',
                    'file': file
                };
                fs.chmod(file, 0777);
                res.send(result);
            });
            source.on('error', function (err) {
                var result = {
                    'status': 'Fail',
                    'error': err
                };
                res.send(result);
            });
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      相关资源
      最近更新 更多