如何使用 Node.js 实现上传、下载文件的功能?

阅读时长 5 分钟读完

背景

在 Web 应用开发过程中,文件上传和下载是常见的需求。而 Node.js 作为一个基于事件驱动的服务器端 JavaScript 执行环境,提供了丰富的工具和模块,可以很容易地实现文件上传和下载功能。

本文将介绍如何使用 Node.js 实现上传、下载文件的功能,并提供示例代码。阅读本文前需要了解基本的 Node.js 知识。

文件上传

文件上传是指将客户端的文件发送到服务器端,保存在服务器端的硬盘上。其中比较重要的部分是客户端和服务器端的数据传输。这里我们介绍如何使用 Node.js 处理文件的上传过程。

客户端

客户端文件上传通常涉及到 HTML 表单

<form> 标签和 <input /> 标签。这些标签常常被包裹在 <form> 标签内,以支持文件上传。

其中 enctype="multipart/form-data" 指定了上传内容的编码格式,method="post" 表示使用 HTTP POST 方法,action="/upload" 表示上传时需要发送到的后端接口地址。

后端

服务器端的处理过程包括:

  • 监听客户端上传请求
  • 将上传的文件保存到硬盘中
  • 返回上传结果给客户端

Node.js 提供了一些第三方模块和内置 API 以简化上述流程。其中最重要的是 multer 模块,该模块提供了处理 form-data 类型数据的中间件。下面是一个简单的使用 multer 模块实现的文件上传程序:

-- -------------------- ---- -------
----- ------- - -------------------
----- ------  - ------------------
----- --- - ----------

-- -----------
----- ------ - -------- ----- ---------- ---

-- ------
------------------- ---------------------- -------- ----- ---- -
  -- -------- - ------ -----
  -- -------- ----------
  --------------------
---

-- ----
---------------- -------- -- -
  --------------------------
---

上述代码中,我们首先使用 multer 模块创建了一个用于处理上传请求的对象 upload,将上传的文件保存到 uploads/ 目录中。upload.single('file') 参数指定了文件对应的 form-data 名称,在前端示例代码中指定为 file

运行上述代码,启动服务后,即可通过 POST 请求上传某个文件。例如在本地启动一个静态文件服务器:

在浏览器中访问 http://localhost:8080/upload.html,上传任意文件即可。

文件下载

文件下载是指服务器端返回文件给客户端,客户端接收文件并保存到本地磁盘上。这里我们介绍如何使用 Node.js 实现文件下载功能。

客户端

客户端下载通常涉及到 HTML 标签 <a>,该标签的 download 属性可指定下载文件名。

后端

服务器端的处理过程包括:

  • 监听客户端下载请求
  • 读取文件并返回给客户端

下面是一个简单的使用 Node.js 实现的文件下载程序:

-- -------------------- ---- -------
----- ------- - -------------------
----- -- - --------------
----- --- - ----------

-- ------
-------------------- ------------- -----
  -- ------------
  ----- ------ - ----------------------------------
  -----------------
---

-- ----
---------------- -------- -- -
  --------------------------
---

上述代码中我们首先通过 fs.createReadStream 创建了一个文件读取流,将文件 ./file.txt 返回给客户端,并使用管道 pipe 进行数据传输。

运行上述代码,启动服务后,即可通过浏览器访问 http://localhost:3000/download,下载文件 ./file.txt

总结

本文介绍了如何使用 Node.js 实现文件上传、下载的基本原理和实现方法,以及对应的代码示例。对于开发者来说,掌握如何使用 Node.js 处理文件 IO,有助于更高效地进行 Web 应用开发。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6496aca448841e98943e8ad6

纠错
反馈