ホームページ >ウェブフロントエンド >jsチュートリアル >Express.js サーバーから正しいファイル名と拡張子を持つファイルをダウンロードするにはどうすればよいですか?

Express.js サーバーから正しいファイル名と拡張子を持つファイルをダウンロードするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-02 11:53:11317ブラウズ

How to Download Files with Correct Filenames and Extensions from Express.js Servers?

Express.js サーバーから完全なファイル名と拡張子を使用してファイルをダウンロードする

Node.js では、ダウンロード用のファイルを提供するのは簡単ですが、正しい名前とファイル拡張子を持っていることを確認するには、少し長くなる可能性があります。トリッキーです。

古いアプローチ:

Express.js を使用してファイルのダウンロード ルートを記述する場合、ファイルを提供するには Content-Disposition ヘッダーを明示的に設定する必要があります。名前とファイル拡張子。さらに、処理を改善するために Content-Length ヘッダーと Content-Type ヘッダーを含めることができます:

app.get('/download', function(req, res) {
  const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
  res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
  res.write(fs.readFileSync(file, 'binary'));
  res.end();
});

Express.js Helper:

Express.js nowファイルのダウンロードを簡素化する download というヘルパー メソッドが含まれていますプロセス:

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

機能強化:

より高度な機能については、パスや MIME などのサードパーティ ライブラリを利用して、ファイル名、ファイル拡張子、 MIME タイプ:

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

app.get('/download', function(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);
  res.download(file);
});

このアプローチにより、ダウンロードされたファイルの場所に関係なく、常に正しい名前とファイル拡張子が付けられます。サーバー上で。

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

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