Expressでファイルをダウンロードさせる

Expressresponseでブラウザ側にファイルをダウンロードさせる方法です。

ヘッダを指定してダウンロードさせる

下記では既存のファイルからデータを読み出していますが、ファイルに無いデータなどをファイルとしてダウンロードさせたい場合は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(サーバ側のファイルパス, ダウンロード時のファイル名);
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です