ホームページ > ウェブフロントエンド > jsチュートリアル > ExpressJS を使用して NodeJS サーバーからファイルをダウンロードするにはどうすればよいですか?

ExpressJS を使用して NodeJS サーバーからファイルをダウンロードするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-30 14:34:11
オリジナル
523 人が閲覧しました

How Can I Download Files from a NodeJS Server Using ExpressJS?

Express を使用して NodeJS サーバーからファイルをダウンロードする

NodeJS サーバー上の Web ページにアクセスするとき、NodeJS サーバーに保存されているファイルをダウンロードする必要がある場合があります。サーバー。この記事では、ExpressJS フレームワークを使用してファイルをダウンロードするプロセスについて説明します。

ExpressJS ファイルのダウンロード

ファイルのダウンロードを開始するには、 res.download() を使用します。 ExpressJSが提供するメソッド。このメソッドは、ファイルの添付と処理に必要な HTTP ヘッダーを自動的に設定します。

デモ:

app.get('/download', (req, res) => {
  res.download(`${__dirname}/upload-folder/dramaticpenguin.MOV`);
});
ログイン後にコピー

ファイル名とタイプを含める

Byデフォルトでは、ダウンロードされたファイルの名前は「download」です。カスタム ファイル名とタイプを指定するには、追加の HTTP ヘッダーを設定する必要があります。

  • File Name: res.setHeader('Content-disposition', 'attachment; filename=ドラマチックペンギン.MOV')
  • ファイルの種類: res.setHeader('Content-type', 'video/quicktime')

包括的な実装

ここでは、MIME ライブラリを使用して、ファイルの MIME タイプ動的:

const path = require('path');
const mime = require('mime');
const fs = require('fs');

app.get('/download', (req, res) => {
  const file = __dirname + '/upload-folder/dramaticpenguin.MOV';
  const filename = path.basename(file);
  const mimetype = mime.getType(file);

  res.setHeader('Content-disposition', `attachment; filename=${filename}`);
  res.setHeader('Content-type', mimetype);

  const filestream = fs.createReadStream(file);
  filestream.pipe(res);
});
ログイン後にコピー

res.write() の使用

res.write() アプローチを使用する場合は、Content-Disposition ヘッダーと Content-Length ヘッダーを設定します。まず:

res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
res.setHeader('Content-Length', file.length);
res.write(file, 'binary');
ログイン後にコピー

ファイル送信には同期メソッドではなく一貫して readStream を使用することを忘れないでください。最適なパフォーマンスを実現します。

以上がExpressJS を使用して NodeJS サーバーからファイルをダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート