Node.js クライアントにファイルを送信

Shraddha Paghdar 2024年2月15日
Node.js クライアントにファイルを送信

この記事では、Express を使用して Node.js でクライアントにファイルを送信する方法について学習します。

Express を使用して Node.js でファイルを送信する

Express.js または Express は、Node.js のバックエンド Web ユーティリティ フレームワークです。 Express は、Web およびモバイル アプリケーションに堅牢な特性セットを提供する Node.js Web アプリケーション フレームワークです。

関数 res.sendFile() は、指定されたパスでファイルを渡し、ファイル名拡張子に基づいて content-type 応答の HTTP ヘッダー フィールドを設定します。

構文:

res.sendFile(path[, options][, fn])
パラメーター 説明
path 送信する必要があるファイルのパスを記述する必須パラメーター。
options 送信されるファイルの maxAgeroot などのさまざまなプロパティを含むオプションのパラメーター。
fn ファイルの呼び出し時に呼び出されるコールバック関数。

ファイルをクライアントに送信するには、次の手順に従います。

  1. Express パッケージをインストールします。

    $ npm install express
    
  2. index.js ファイルを作成し、以下のコマンドを実行します。

    node index.js
    
  3. helloworld.txt ファイルを作成します。

    Hello World!
    
  4. 以下のコード スニペットを渡して index.js ファイル を実行します。

完全なソース コード - index.js:

const express = require('express');
const app = express();
const path = require('path');
const PORT = 3001;

app.get('/', (req, res, next) => {
  const fileName = 'helloworld.txt';
  res.sendFile(fileName, {root: path.join(__dirname)}, (err) => {
    if (err) {
      next(err);
    } else {
      console.log('File Sent:', fileName);
    }
  });
});

app.listen(PORT, (err) => {
  if (err) console.log(err);
  console.log('Server listening on PORT', PORT);
});

上記の例では、指定された port 3001 でリッスンするサーバーを作成しました。 サーバーが指定されたポートをリッスンすると、最初に一致したルート内のコードが実行されます。

応答オブジェクトは、sendFile() メソッドでクライアントに返されます。 エラーが発生した場合は、next() メソッドを使用してエラー ハンドラーにエラーを渡します。

すべてが順調であれば、ファイルの内容とともに応答オブジェクトがクライアントに返されます。

上記のコードを Node.js をサポートする replit で実行すると、以下の結果が表示されます。

出力:

Server listening on PORT 3001
File Sent: helloworld.txt

Express を使用して Node.js でファイルを送信

コードデモを実行

Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn