>  기사  >  웹 프론트엔드  >  nodejs는 http 파일 다운로드를 구현합니다.

nodejs는 http 파일 다운로드를 구현합니다.

王林
王林원래의
2023-05-27 17:48:381244검색

Node.js는 JavaScript 코드가 서버에서 실행될 수 있게 해주는 오픈 소스 크로스 플랫폼 JavaScript 런타임 환경입니다. Node.js에서는 http 모듈을 통해 간단한 http 서버를 쉽게 생성하고, 로컬 파일을 읽어 파일 다운로드 기능을 구현할 수 있습니다. 이 기사에서는 Node.js를 사용하여 http 파일 다운로드를 구현하는 방법을 소개합니다.

  1. http 서버 만들기

Node.js의 http 모듈을 사용하여 http 서버를 만드는 것은 매우 쉽습니다. 코드는 다음과 같습니다.

const http = require('http');

const server = http.createServer((req, res) => {
  console.log('Request received');
});

server.listen(3000, () => {
  console.log('Server started on port 3000');
});

이 코드는 포트 3000에서 요청을 수신하는 http 서버를 만듭니다. . 서버가 요청을 받으면 콘솔에 'Request received'가 출력됩니다.

  1. http 요청 처리

파일 다운로드 기능을 구현하려면 요청 핸들러에서 요청된 URL을 가져와서 요청된 URL을 기반으로 다운로드할 파일을 결정해야 합니다. 코드는 다음과 같습니다.

const http = require('http');
const fs = require('fs');

const server = http.createServer((req, res) => {
  console.log('Request received');

  const fileUrl = req.url.slice(1);
  const filePath = `./${fileUrl}`;

  fs.stat(filePath, (err, stats) => {
    if (err) {
      res.statusCode = 404;
      res.end('File not found');
      return;
    }

    fs.readFile(filePath, (err, data) => {
      if (err) {
        res.statusCode = 500;
        res.end('Error reading file');
        return;
      }

      res.setHeader('Content-Disposition', `attachment; filename=${fileUrl}`);
      res.setHeader('Content-Type', 'application/octet-stream');
      res.setHeader('Content-Length', stats.size);
      res.end(data);
    });
  });
});

server.listen(3000, () => {
  console.log('Server started on port 3000');
});

이 코드에서는 요청된 URL에서 파일 이름을 가져오고 파일 이름을 기반으로 파일 경로를 결정합니다. 다음으로 fs 모듈의 stat 메소드를 사용하여 파일이 존재하는지 확인합니다. 파일이 존재하지 않으면 클라이언트에 404 응답을 보내고 '파일을 찾을 수 없음' 메시지를 반환합니다. 파일이 존재하지만 파일 내용을 읽는 동안 오류가 발생하면 클라이언트에 500 응답을 보내고 '파일 읽기 오류' 메시지를 반환합니다. 모든 것이 정상이면 응답 헤더를 설정하고 파일 내용을 클라이언트에 보냅니다.

  1. 다운로드 기능 테스트

브라우저에 'http://localhost:3000/file.txt'를 입력하면 됩니다. 여기서 file.txt는 다운로드할 파일 이름입니다. 파일이 존재하면 서버가 해당 파일을 다운로드합니다.

요약

이번 글에서는 Node.js를 통해 http 파일 다운로드를 구현하는 방법을 소개했습니다. 우리는 클라이언트 요청을 처리하고 fs 모듈을 통해 로컬 파일을 읽고 이를 클라이언트에 응답 콘텐츠로 보내기 위해 http 서버를 만들었습니다. 이 예에서는 클라이언트에 파일 다운로드 기능을 제공하는 매우 간단한 방법을 제공하지만 실제로는 파일 크기 제한, 다운로드 속도 제한 및 파일이 합법적인 파일인지 확인하는 등 보다 실용적인 다운로드 관리 구현을 고려할 수 있습니다. .

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

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