Node.js를 사용하여 서버에서 클라이언트로 파일을 다운로드하는 방법은 무엇입니까?

6671 단어 node
Originally posted here!

Node.js 서버에서 클라이언트로 파일을 다운로드하려면 파일을 읽고 응답 헤더Content-Disposition를 설정해야 합니다.
resume.pdf라는 디렉토리에 docs라는 이름의 PDF가 있고 사용자가 /resume 끝점으로 이동할 때마다 해당 PDF를 다운로드하려고 한다고 가정해 보겠습니다.

이에 대한 코드를 작성해 보겠습니다. 🦄

먼저 다음과 같이 파일을 읽을 읽기 스트림을 생성합니다.

// filesystem module
const fs = require("fs");

// endpoint for /resume
app.get("/resume", (req, res) => {
  const rs = fs.createReadStream("./docs/resume.pdf");
});


그런 다음 Content-Disposition 응답 헤더를 설정하고 값을 attachment; filename=nameOftheFileYouWant.pdf 로 지정합니다. 이것은 사용자의 브라우저에 이것이 다운로드해야 하는 첨부 파일임을 알려줍니다.

// filesystem module
const fs = require("fs");

// endpoint for /resume
app.get("/resume", (req, res) => {
  // create read steam for the pdf
  const rs = fs.createReadStream("./docs/resume.pdf");

  // set response header: Content-Disposition
  res.setHeader("Content-Disposition", "attachment; john-resume.pdf");
});


헤더를 설정한 후에는 읽기 스트림을 그의 Response 메서드를 사용하여 res 개체pipe()로 파이프하기만 하면 됩니다.

// filesystem module
const fs = require("fs");

// endpoint for /resume
app.get("/resume", (req, res) => {
  // create read steam for the pdf
  const rs = fs.createReadStream("./docs/resume.pdf");

  // set response header: Content-Disposition
  res.setHeader("Content-Disposition", "attachment; john-resume.pdf");

  // pipe the read stream to the Response object
  rs.pipe(res);
});


Express.js를 사용하는 경우 res.download() 메서드를 사용하고 다음과 같이 파일 경로를 인수로 전달할 수 있습니다.




// filesystem module
const fs = require("fs");

// endpoint for /resume
app.get("/resume", (req, res) => {
  // express.js
  res.download("./docs/resume.pdf");
});


😃 유용하셨다면 공유해 주세요.

좋은 웹페이지 즐겨찾기