javascript - 如何处理 multer node.js 中的文件大小超出错误

标签 javascript node.js express multer

文件上传中文件大小超过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);
        }

    }); 
});

最佳答案

uploadOptions 的回调在 err 对象中返回代码:'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);
        });
    }
});

关于javascript - 如何处理 multer node.js 中的文件大小超出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37595160/

相关文章:

javascript - 使用种子字符串在 mongoose 中创建 ObjectId

javascript - 监控 Node.js 进程中的最大内存消耗

node.js - 使用 MongoDB 对 Windows Azure 上的 node.js 应用程序的首次请求产生 400 Bad Request

performance - 在express中使用nodejs可以采取哪些措施来提高jade模板渲染性能

java - 使用Tomcat配置时如何在Idea中重新部署javascript

javascript - 如何从数组中删除所有奇数索引(例如 : a[1], a[3]..)值

javascript - JQuery 切换仅单击上一个跨度显示

javascript - 绘图.io : How can I debug unminified js code?

javascript - 使用 Node/Express 正确处理错误

javascript - 当我尝试使用 nodejs 请求模块传递 header 信息时,出现以下 TypeError 错误