在 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
。
const multer = require('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