我google了很多关于如何在express js中安全上传文件的信息,最后我开发了以下代码来实现。

app.use(express.json());
app.use(express.urlencoded());
app.post('/',express.bodyParser({
                              keepExtensions: true,
                              uploadDir: __dirname + '/faxFiles',
                              limit: '20mb'
                            }),function(req,res){
                              checkFile(req.files.faxFile);
                            });

如您所见,我可以在bodyparser中限制文件大小并设置uploaddir,现在我只需要允许用户上传图像和pdf,我使用的方法是checkFile函数,它包含以下代码。
var fs = require('fs');
var checkFile = function(faxFile){
    if (faxFile.type != "image/jpeg" || faxFile.type != "application/pdf" || faxFile.type != "image/gif"){
        fs.unlink(faxFile.path, function(err){
        });
    }
}

但我认为这不是最好的办法,有没有别的办法?比如在bodyparser构造函数中设置文件扩展名?

最佳答案

您可以使用mmmagic严格检查扩展名。它是node.js的异步libmagic绑定,用于通过数据检查检测内容类型。

07-28 04:54