2017-06-14 15 views
2

私はnode.jsを使用しています。私は、サーバー上にファイルを作成し、エンドポイントがヒットしたときにダウンロードしたいと思います。 私は現在持っているコードです。エクスプレスでサーバーからファイルをダウンロードする方法

router.get('/download', (req, res) => { 
const fileController = new FileController(); 
    fileController.generateJSONFile() 
    .then((file) => { 
    fs.writeFile('fooFile.json', file, 'utf8'); 
    }).then((success) => { 
    res.download('fooFile.json'); 
    }) 
    .catch((error) => { 
    res.status(500).send(); 
}); 
}); 

ダウンロードが完了したら、すぐにサーバーからファイルを削除したいと思います。

この目的を達成するより良い方法がある場合は、res.download()を使用する必要はありません。

答えて

2

これは役に立ちますか?これにより、ブラウザにファイルがfooFile.jsonとしてダウンロードされます。これは一時ファイルの保存を必要としません。

router.get('/download', (req, res) => { 
const fileController = new FileController(); 
    fileController.generateJSONFile() 
    .then((file) => { 
    res.setHeader('Content-Type', 'application/octet-stream; charset=utf-8'); 
    res.setHeader('Content-Disposition', 'attachment; filename="fooFile.json"'); 
    res.send(file); 
    }) 
    .catch((error) => { 
    res.status(500).send(); 
}); 
}); 

jsonを送信したい場合は、

res.setHeader('Content-Type', 'application/json; charset=utf-8'); 
res.send(file); 
関連する問題