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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-12-04 21:25:15787ブラウズ

How Do I Download Files from a Node.js Server Using Express?

Express を使用した Node.js サーバーからのファイルのダウンロード

Node.js の Express フレームワークは、サーバーからクライアントにファイルをダウンロードする便利な方法を提供します。これを容易にするには、次の手順に従います。

ヘッダーの設定

ファイルを送信するときは、ファイル名や種類などの重要な情報をクライアントに提供するために、正しい HTTP ヘッダーを設定することが重要です。

  • Content-disposition: このヘッダーを「attachment;」に設定します。ファイル名=<ファイル名>'クライアントから見えるファイル名を指定します。
  • Content-type: 「video/quicktime」など、ダウンロードされるファイルのタイプを示します。

非同期ファイル ストリーミング

パフォーマンスを向上させるには、ファイル全体を読み取るのではなく、ファイル ストリームを使用してデータを送信します。同期的に。このアプローチにより、潜在的な遅延やメモリの問題が最小限に抑えられます。

改善されたソリューション

Express には、ファイル ダウンロード用の組み込み関数が含まれるようになりました。

app.get('/download', function(req, res) {
  const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
  res.download(file); // Sets the appropriate headers and streams the file.
});

従来のソリューション

Express の組み込みダウンロード機能の前に、次のコードはより包括的なファイルのダウンロードを提供しますソリューション:

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

app.get('/download', function(req, res) {

  var file = __dirname + '/upload-folder/dramaticpenguin.MOV';

  var filename = path.basename(file);
  var mimetype = mime.getType(file);

  res.setHeader('Content-disposition', 'attachment; filename=' + filename);
  res.setHeader('Content-type', mimetype);

  var filestream = fs.createReadStream(file);
  filestream.pipe(res);
});

このソリューションには以下が含まれます:

  • path.basename を使用したファイルとファイル名の抽出
  • node-mime を使用したコンテンツ タイプの決定
  • 効率的なファイルストリーミングfs.createReadStream.

これらの手法に従うことで、Express 経由で Node.js サーバーからファイルを効果的にダウンロードでき、クライアントがダウンロードされたコンテンツを正しく受信して認識できるようになります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。