21xrx.com
2024-11-05 21:36:56 Tuesday
登录
文章检索 我的文章 写文章
Node.js实现文件下载功能
2023-07-09 13:30:45 深夜i     --     --
Node js 文件下载 实现功能

在网站应用中,有时需要给用户提供文件下载的功能。Node.js提供了非常简便的方式来实现这个功能。

实现文件下载

要实现文件下载功能,需要使用Node.js的核心模块——http。具体步骤如下:

1. 首先,需要在服务器端创建一个HTTP服务器:


const http = require('http');

const server = http.createServer((req, res) =>

 // 处理请求

);

2. 在处理请求的函数中,获取要下载的文件的路径,然后使用fs模块读取文件内容:


const fs = require('fs');

const path = require('path');

const filePath = path.join(__dirname, 'file.txt');

fs.readFile(filePath, (err, data) => {

 if (err) {

  console.error(err);

  res.statusCode = 500;

  res.end('读取文件出错了');

  return;

 }

 // 处理文件内容

});

3. 处理文件内容时,需要将文件内容写入到响应中。同时,设置响应头,告诉浏览器将要下载文件:


const fileName = 'file.txt';

res.setHeader('Content-disposition', `attachment;filename=${fileName}`);

res.setHeader('Content-type', 'application/octet-stream');

res.setHeader('Content-Length', data.length);

res.write(data);

res.end();

完整的代码如下:


const http = require('http');

const fs = require('fs');

const path = require('path');

const server = http.createServer((req, res) => {

 const filePath = path.join(__dirname, 'file.txt');

 fs.readFile(filePath, (err, data) => {

  if (err) {

   console.error(err);

   res.statusCode = 500;

   res.end('读取文件出错了');

   return;

  }

  const fileName = 'file.txt';

  res.setHeader('Content-disposition', `attachment;filename=${fileName}`);

  res.setHeader('Content-type', 'application/octet-stream');

  res.setHeader('Content-Length', data.length);

  res.write(data);

  res.end();

 });

});

server.listen(3000, () => {

 console.log('Server is running on http://localhost:3000');

});

其中,path.join(__dirname, 'file.txt')用来获取当前文件所在目录下的file.txt文件的路径。如果要下载其他文件,只需要修改这个路径即可。

测试文件下载

使用浏览器访问http://localhost:3000,浏览器会自动下载file.txt文件。下载后,打开文件,可以看到文件内容。

总结

Node.js可以实现文件下载功能。实现方式很简单,只需要使用Node.js提供的核心模块——http和fs,配合设置响应头即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复