Node.js 中的文件上传和下载技术

阅读时长 6 分钟读完

在 Web 开发中,经常需要实现文件上传和下载功能。在 Node.js 中,使用一些库和技术可以轻松地实现这些功能。本文将介绍 Node.js 中的文件上传和下载技术,包括如何处理文件上传、如何下载文件、如何限制上传文件的类型和大小,以及如何处理上传出错的情况。

处理文件上传

在 Node.js 中,处理文件上传通常使用 multipart/form-data 格式。对于这种格式,Node.js 提供了一个内置模块 formidable,可以方便地解析上传的文件。

安装 formidable 模块:

使用 formidable 解析上传的文件:

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

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

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

在上面的例子中,我们创建了一个 HTTP 服务器,并定义了一个路由 /upload,如果请求类型为 POST,那么就使用 formidable 解析上传的文件。解析完成后,可以从 fieldsfiles 中获取上传的文件信息。

下载文件

在 Node.js 中,下载文件可以使用内置模块 fs,该模块提供了一些方法可以读取和写入文件。例如,使用 fs 将文件写入 HTTP 响应:

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

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

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

在上面的例子中,我们定义了一个路由 /download,当请求该路由时,使用 fs 读取文件并将其作为 HTTP 响应的数据返回。同时,我们设置了响应头 Content-Disposition,使得浏览器自动下载该文件。

限制上传文件的类型和大小

在实际开发中,我们常常需要限制上传文件的类型和大小,以防止用户上传不允许的文件或过大的文件。这可以使用 formidable 的一些属性和方法实现。

限制上传文件类型:

限制上传文件大小:

处理上传出错的情况

在处理文件上传时,有时可能会出现上传失败的情况,例如用户中途取消了上传,或者上传的文件大小超过了限制。这时候,我们需要处理这些异常情况,以避免程序崩溃或出现其他不良影响。

处理上传中断的情况:

处理上传文件超过限制的情况:

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

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

在上面的例子中,我们使用 formidable 的事件监听机制来捕获出错情况,并作相应的处理。

结语

本文介绍了 Node.js 中的文件上传和下载技术,包括如何处理文件上传、如何下载文件、如何限制上传文件的类型和大小,以及如何处理上传出错的情况。希望本文对您对于 Node.js 文件上传和下载方面的了解和掌握有所帮助。

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

纠错
反馈