Expressでファイルをダウンロードさせる
Expressのresponse
でブラウザ側にファイルをダウンロードさせる方法です。
ヘッダを指定してダウンロードさせる
下記では既存のファイルからデータを読み出していますが、ファイルに無いデータなどをファイルとしてダウンロードさせたい場合はContent-disposition
を指定します。
response.set('Content-disposition', 'attachment; filename=<ダウンロード時のファイル名>');
const data = fs.readFileSync(サーバ側のファイルパス);
response.send(data);
Content-Typeも指定
下記はContent-Typeを指定して、CSVファイルとしてダウンロードさせる場合。
送信するテキストデータはカンマ区切りの文字列です。
response.set('Content-disposition', 'attachment; filename=<CSVファイル名.csv>');
response.set('Content-Type', 'text/csv; charset=Shift_JIS');
response.send(<テキストデータ>);
ファイルを直接ダウンロードさせる
既存のファイルをダウンロードさせる場合はresponse.download()
メソッドが簡単です。
response.download(サーバ側のファイルパス);
response.download(サーバ側のファイルパス, ダウンロード時のファイル名);