如何使用 Express.js 上传文件并进行异常处理

引言

Express.js 是一种流行的 Node.js Web 框架,用于构建可靠的 Web 应用程序。在现代的 Web 应用中,文件上传是一个必需的功能。在本文中,我们将讨论如何使用 Express.js 上传文件,并介绍如何处理常见的异常情况。

准备工作

在开始之前,请确保您已经安装了 Node.js 和 Express.js。另外,您需要安装 multer 库,它是一个 Node.js 中间件,用于处理 multipart/form-data 类型的表单数据,特别是文件上传。

在终端中输入如下命令以安装 multer 库:

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

处理文件上传

下面我们将创建一个基本的 Express.js 应用程序,并处理文件上传请求。请按照以下步骤操作:

  1. 创建一个新的文件夹 express-file-upload
  2. 在文件夹中创建一个新的文件 index.js,并添加以下代码:
----- ------- - -------------------
----- ------ - ------------------

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

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

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

在上面的代码中:

  • 我们首先引入了 expressmulter 库。
  • 接着,我们创建了一个 Express 实例 app 和一个 multer 实例 upload,并将上传的文件保存到 uploads/ 目录中。
  • 然后,我们创建了一个 POST 路由 /upload,并将其绑定到 upload.single('file') 中间件。这将告诉 multer 仅处理名为 file 的文件。
  • 最后,我们将 POST 路由处理函数定义为 (req, res, next),并输出上传的文件信息。
  1. 运行如下命令,启动服务器:
---- --------
  1. 使用 curl 命令或其他任何工具向应用程序发送文件上传请求:
---- -- ---- -- ------------------------- ----------------------------

在上传完成后,您应该可以看到服务器的终端输出信息。

异常处理

在文件上传中,存在各种异常情况。例如,上传的文件可能太大、格式不正确或上传过程中出现连接故障等。为了处理这些异常情况,我们可以使用 multer 提供的一些回调函数。

更具体地说,我们可以使用 upload 对象中的 limits 属性指定上传文件的大小限制,或者使用 fileFilter 函数过滤不允许上传的文件类型。同时,我们也可以使用 onError 函数处理上传文件过程中的错误。

具体代码如下:

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

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

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

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

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

在上面的代码中:

  • 我们在 upload 对象中添加了 limitsfileFilter 属性,以限制上传文件的大小和类型。
  • 然后,我们使用 onError 函数处理上传文件过程中的错误,并调用 next 函数将错误传递给 Express 错误处理程序。
  • 最后,我们定义了一个全局错误处理程序,用于捕获运行时错误并发送 500 响应。

结论

在本文中,我们介绍了如何使用 Express.js 和 multer 库上传文件并处理常见的异常情况。通过掌握这些技巧,您可以轻松地构建可靠的文件上传功能,并为用户提供更好的体验。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6738c1d8317fbffedf129824