简体   繁体   English

在multer node.js中如何处理文件大小超过错误

[英]How Handle File Size Exceeds Error in multer node.js

How to send a response if the file size exceeds in the multer in the file upload.The app crashes when the file uploaded the is greater than the limit. 如果文件大小超过文件上传中的过滤器,如何发送响应。当上传的文件大于限制时,应用程序崩溃。 I tried to check the req.file.size with uploadFileSize , unfortunately it doesn't work. 我试图用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);
        }

    }); 
});

The callback of uploadOptions returns code :'LIMIT_FILE_SIZE' in err object. uploadOptions的回调返回错误对象中的代码:'LIMIT_FILE_SIZE'。 You can handle by that. 你可以处理。 Also you should check err before starting to process file. 你也应该在开始处理文件之前检查错误。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM