2

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コンストラクターでファイル拡張子を設定するなど、別の方法はありますか?

4

3 に答える 3

1

mmmagicを使用して、拡張子を厳密にチェックできます。これは、データ検査によってコンテンツ タイプを検出するための node.js の非同期 libmagic バインディングです。

于 2013-11-06T10:06:10.530 に答える