ホームページ >ウェブフロントエンド >フロントエンドQ&A >Nodejsでファイルをダウンロードする方法

Nodejsでファイルをダウンロードする方法

王林
王林オリジナル
2023-05-27 20:43:051454ブラウズ

Node.js では、node-fetch モジュールと fs モジュールを使用してファイルをダウンロードできます。これら 2 つのモジュールを使用してファイルをダウンロードする方法は次のとおりです。

まず、node-fetch モジュールと fs モジュールをインストールする必要があります。 npm コマンドを使用してインストールできます。

npm install node-fetch fs

インストールが完了したら、これら 2 つのモジュールを使用できます。

ファイルのダウンロード

ファイルをダウンロードするプロセスは、いくつかのステップに分けることができます。

  1. HTTP リクエストを送信してファイル データを取得する
  2. データ ファイル

次は、ファイルをダウンロードするためのサンプル コードです:

const fetch = require('node-fetch');
const fs = require('fs');

const downloadFile = async (url, dest) => {
  const response = await fetch(url);

  if (!response.ok) {
    throw new Error(`failed to download file: ${response.statusText}`);
  }

  const fileStream = fs.createWriteStream(dest);
  await new Promise((resolve, reject) => {
    response.body.pipe(fileStream);
    response.body.on("error", (err) => {
      reject(err);
    });
    fileStream.on("finish", function() {
      resolve();
    });
  });
};

const fileUrl = 'https://example.com/files/file.txt';
const destPath = 'file.txt';

downloadFile(fileUrl, destPath)
  .then(() => {
    console.log('file downloaded successfully');
  })
  .catch((err) => {
    console.error('failed to download file:', err);
  });

このコードは、まずノードフェッチ モジュールを使用して HTTP リクエストを送信し、ファイル データを取得します。 fs モジュールを使用してデータをファイルに書き込みます。ファイルデータの取得処理中に、HTTP レスポンスのステータスコードが 200 であるかどうかを確認する必要があることに注意してください。そうでない場合は、ダウンロードは失敗しています。

コードでは、async/await 非同期構文と Promise オブジェクトを使用して、結果が出力される前にファイル データが書き込まれるようにします。

その他のオプション

上記のサンプル コードは、ファイルをダウンロードする簡単な例にすぎません。さらに多くのオプションや機能が必要な場合は、他のパラメーターを使用してコードを調整できます。

  1. HTTP リクエスト ヘッダーの指定

node-fetch の headers パラメーターを使用して、HTTP リクエスト ヘッダーを指定できます。例:

const headers = {
  'Authorization': 'Bearer ' + token,
  'Content-Type': 'application/json'
};
const response = await fetch(url, {
  headers: headers
});
  1. ダウンロード速度の制限

ダウンロード速度を制限する必要がある場合は、サードパーティ モジュールのスピードラインを使用できます。例:

const speedline = require('speedline');

const fileUrl = 'https://example.com/files/file.txt';
const destPath = 'file.txt';
const maxSpeed = 100; // 100 KB/s

const response = await fetch(fileUrl);
const stream = response.body;
const fileStream = fs.createWriteStream(destPath);
await speedline(stream.pipe(fileStream), maxSpeed);
  1. キャッシュ ダウンロード ファイル

キャッシュが必要な場合 ファイルをダウンロードするには、サードパーティ モジュールのノード キャッシュを使用できます。例:

const NodeCache = require('node-cache');
const fileCache = new NodeCache();

const downloadFile = async (url, dest) => {
  const cachedData = fileCache.get(url);
  if (cachedData) {
    return fs.writeFileSync(dest, cachedData);
  }
  
  const response = await fetch(url);

  if (!response.ok) {
    throw new Error(`failed to download file: ${response.statusText}`);
  }

  const fileData = await response.text();

  fileCache.set(url, fileData);
  fs.writeFileSync(dest, fileData);
};

上記は、ファイルをダウンロードするための基礎知識とサンプル コードです。 Node.jsを使用して。実際のニーズとネットワーク環境に応じて、ファイルのダウンロードに適したパラメータと方法を選択できます。

以上がNodejsでファイルをダウンロードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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