如何使用 Express.js 进行文件上传

阅读时长 6 分钟读完

在 Web 应用程序开发中,文件上传是一个非常重要的功能,用户可以通过此功能在网站或应用程序上上传图片、音频或视频等文件。而 Express.js 是一个流行的 Web 应用程序框架,它提供了一个简单而有效的方法来处理文件上传。

本文将介绍如何使用 Express.js 来实现文件上传功能,包括如何设置路由、如何读取上传的文件以及如何保存上传的文件。首先,我们需要准备一个基本的 Express.js 应用程序。

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

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

---------------- -- -- -
    ------------------- ------- -- ---- -------
---
展开代码

以上代码创建了一个 Express.js 应用程序并监听了端口 3000。我们还使用了 express.urlencoded 中间件和 express.json 中间件来解析 POST 请求主体中的表单数据和 JSON 数据。接下来,我们将添加一个路由来处理文件上传请求。

设置文件上传路由

我们使用 multer 模块来处理文件上传,该模块是一个 Node.js 中间件,用于处理 multipart/form-data 类型的数据。对于每个上传的文件,multer 将创建一个具有以下属性的对象:

  • fieldname:文件在表单中的字段名称。
  • originalname:上传的文件的原始名称。
  • encoding:上传的文件的编码类型。
  • mimetype:上传的文件的 MIME 类型。
  • size:上传的文件的大小(字节)。
  • destination:上传的文件的保存目录。
  • filename:上传的文件的保存名称。
  • path:上传的文件的完整路径。

我们将在以下示例代码中使用 multer 来处理文件上传。首先,我们需要在代码中添加以下代码来引入 multer

接下来,我们将添加一个路由来处理文件上传请求。在以下示例代码中,我们将创建一个名为 upload 的路由,它将处理 POST 请求,并使用 multer 中间件处理文件上传。destination 选项用于设置上传文件的保存目录,filename 选项用于设置文件的保存名称。当文件上传成功后,我们将打印出上传的文件信息,然后返回一个 JSON 响应消息。

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

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

------------------- ---------------------- ----- ---- -- -
    ----------------------
    ---------- -------- ----- -------- ------------- ---
---
展开代码

single 方法用于指示只上传单个文件,我们需要提供要上传的文件的字段名称。在上面的示例代码中,我们使用 file 作为字段名称。当客户端发起带有文件数据的请求时,此路由将处理该请求并将上传的文件保存在 uploads/ 目录下。接下来,我们将介绍如何读取上传的文件。

读取上传的文件

当用户成功上传文件后,我们需要读取该文件以进行处理。我们可以使用 Node.js 的 fs 模块来读取上传的文件。以下示例代码演示了如何读取上传的文件。

-- -------------------- ---- -------
-------------------------- ----- ---- -- -
    ----- -------- - --------- - ----------- - --------------------
    --------------------- ----- ----- -- -
        -- ----- -
            ---------- -------- ----- --- ------ ---
        - ---- -
            ---------------
        -
    ---
---
展开代码

在上面的代码中,我们使用 fs 模块的 readFile 方法来读取上传的文件,并将其返回给客户端。当客户端使用 GET 请求访问 /file/:filename 路径时,此路由将处理该请求并返回上传的文件数据。接下来,我们将介绍如何保存上传的文件。

保存上传的文件

最后,我们需要将上传的文件保存在服务器上。在 multer 模块中,文件保存在 destination 选项指定的目录中。我们使用 Node.js 的 fs 模块来保存上传的文件。

-- -------------------- ---- -------
------------------- ---------------------- ----- ---- -- -
    ----- -------- - --------------
    ----- ----------- - --------- - ----------- - ------------------
    ------------------- ------------ ----- -- -
        -- ----- -
            ---------- -------- ----- ------ ------- ---
        - ---- -
            ---------- -------- ----- -------- ------------- ---
        -
    ---
---
展开代码

在上面的代码中,我们首先获取上传文件的路径,然后根据新的保存名称生成新的保存路径,并使用 fs.rename 方法将上传的文件从旧路径移动到新路径。当文件成功保存后,我们将返回一个 JSON 响应消息。

以上是使用 Express.js 进行文件上传的详细步骤,包括如何设置路由、如何读取上传的文件以及如何保存上传的文件。在实际应用中,我们需要根据具体的需求调整代码,以实现更完整的文件上传功能。

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

纠错
反馈

纠错反馈