>웹 프론트엔드 >프런트엔드 Q&A >nodejs에서 파일을 다운로드하는 방법

nodejs에서 파일을 다운로드하는 방법

王林
王林원래의
2023-05-27 20:43:051454검색

Node.js에서는 node-fetch 및 fs 모듈을 사용하여 파일을 다운로드할 수 있습니다. 이 두 모듈을 사용하여 파일을 다운로드하는 방법은 다음과 같습니다.

먼저 node-fetch 및 fs 모듈을 설치해야 합니다. npm 명령을 사용하여 설치할 수 있습니다:

npm install node-fetch fs

설치가 완료되면 이 두 모듈을 사용할 수 있습니다.

파일 다운로드

파일 다운로드 프로세스는 여러 단계로 나눌 수 있습니다.

  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);
  });

이 코드는 먼저 node-fetch 모듈을 사용하여 HTTP 요청을 보내 파일 데이터를 얻은 다음 fs 모듈을 사용하여 데이터를 파일에 씁니다. 파일 데이터를 가져오는 과정에서 HTTP 응답 상태 코드가 200인지 확인해야 합니다. 그렇지 않은 경우 다운로드가 실패한 것입니다.

이 코드는 async/await 비동기 구문과 Promise 객체를 사용하여 결과가 출력되기 전에 파일 데이터가 기록되도록 합니다.

추가 옵션

위의 샘플 코드는 파일을 다운로드하는 간단한 예일 뿐이며, 더 많은 옵션과 기능이 필요한 경우 다른 매개변수로 코드를 조정할 수 있습니다.

  1. HTTP 요청 헤더 지정

node-fetch의 헤더 매개변수를 사용하여 HTTP 요청 헤더를 지정할 수 있습니다. 예:

const headers = {
  'Authorization': 'Bearer ' + token,
  'Content-Type': 'application/json'
};
const response = await fetch(url, {
  headers: headers
});
  1. 다운로드 속도 제한

다운로드 속도를 제한해야 하는 경우 다음을 수행할 수 있습니다. 예를 들어 타사 모듈 스피드라인을 사용하세요. Node.js 파일 다운로드에 대한 기본 지식과 샘플 코드입니다. 실제 요구 사항과 네트워크 환경에 따라 파일 다운로드에 적합한 매개변수와 방법을 선택할 수 있습니다.

위 내용은 nodejs에서 파일을 다운로드하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.