21xrx.com
2024-05-20 05:46:25 Monday
登录
文章检索 我的文章 写文章
Node.js 的文件上传和下载实现
2023-07-09 12:15:10 深夜i     --     --
Node js 文件上传 文件下载 实现

随着互联网的不断发展以及人们对数据的高要求,在个人或者企业级应用中文件上传和下载功能越来越普遍,而 Node.js 作为一门高效的后端语言,可以帮助我们快速实现文件上传和下载的功能。

一、文件上传实现

1. 安装依赖

Node.js 提供了一个处理文件上传的模块——`multiparty`,它可以解析并处理上传的文件数据。在使用前,通过`npm i multiparty`安装。

2. 监听上传请求

Node.js 通过`http`或`https`模块来监听客户端的请求,并控制文件上传的处理。如下示例:


const http = require("http");

const multiparty = require("multiparty");

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

 if (req.url === "/upload" && req.method === "POST") {

  const form = new multiparty.Form();

  form.parse(req, (err, fields, files) => {

   if (err) {

    console.log(err);

   } else {

    console.log(files); // 打印上传的文件信息

   }

   res.end("upload success");

  });

 }

}).listen(3000);

3. 解析表单数据

使用`form.parse()`方法将上传的文件数据分离解析成 fields 和 files 两个部分。其中 fields 储存了表单中的普通文本数据,files 储存了表单中上传的文件数据。我们可以对这两个部分进行相应的处理。

二、文件下载实现

文件下载主要是在服务器端生成或读取一个文件流并返回给客户端,使客户端通过浏览器或者其他方式将文件下载到本地保存。具体步骤如下:

1. 读取文件流

读取文件流的方式大致分为两种:一种是通过 Node.js 的文件操作模块`fs`读取本地文件,另一种是通过对网络文件进行请求。比如通过 HTTP 等协议请求该文件,将文件流传递给客户端的浏览器。


const fs = require("fs");

function readFile(filePath) {

 const stream = fs.createReadStream(filePath);

 return stream;

}

2. 设置请求头

在服务器端设置 Content-Disposition 头使文件下载到本地。如下代码示例:


const http = require("http");

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

 const filePath = "/path/to/file"; // 文件路径

 const stream = readFile(filePath);

 res.setHeader("Content-Type", "application/force-download");

 res.setHeader("Content-Disposition", `attachment;filename=${encodeURIComponent(fileName)}`);

 stream.pipe(res);

}).listen(3000);

3. 储存到本地

客户端收到文件流后需要进行相应的操作,如储存到本地磁盘上。通过浏览器输入 URL 路径时,会自动打开一个保存文件的对话框,用户可以选择将文件存储到本地磁盘中。

以上是 Node.js 实现文件上传和下载的详细步骤。希望本文能帮助大家了解 Node.js 文件操作相关知识。

  
  

评论区

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