在现代 Web 应用程序中,文件上传和下载是非常常见的功能。Express.js 是一个流行的 Web 框架,它提供了许多中间件来处理文件上传和下载。在本文中,我们将学习如何使用 Express.js 中间件来处理文件上传和下载。
文件上传
文件上传是指将文件从客户端计算机上传到服务器的过程。在 Express.js 中,我们可以使用 multer 中间件来处理文件上传。Multer 可以处理单个文件上传,多个文件上传以及文件上传和表单数据的混合上传。
安装 Multer
在使用 Multer 中间件之前,您需要在项目中安装它。可以使用以下命令在项目中安装 Multer:
npm install multer
使用 Multer
要使用 Multer 中间件,您需要在 Express.js 应用程序中引入它。请参考以下代码:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ------ - ----------------- ----- --- - --------- ----- ------ - -------- ----- ---------- -- ------------------- ---------------------- ----- ---- -- - -------------- -------- -------------- -- ---------------- -- -- - ------------------- ------- -- ---- ------ --
在上面的代码中,我们首先引入了 Express.js 和 Multer 中间件。然后,我们创建了一个新的 Express.js 应用程序,并使用 Multer 创建了一个上传对象。在这个上传对象中,我们指定了上传文件的目标目录。在这个例子中,我们将上传的文件保存在 uploads/
目录下。
接下来,我们定义了一个路由处理程序来处理文件上传。在这个处理程序中,我们使用 upload.single()
方法来指定上传的单个文件。这个 single()
方法需要一个文件字段的名称作为参数。在这个例子中,我们使用 file
作为文件字段的名称。
最后,我们启动了 Express.js 应用程序并监听端口 3000。现在,您可以使用 POST 请求将文件上传到 /upload
路径。
处理多个文件上传
要处理多个文件上传,您可以使用 upload.array()
方法。请参考以下代码:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ------ - ----------------- ----- --- - --------- ----- ------ - -------- ----- ---------- -- ------------------- --------------------- ---- ----- ---- -- - --------------- -------- -------------- -- ---------------- -- -- - ------------------- ------- -- ---- ------ --
在上面的代码中,我们使用 upload.array()
方法来处理多个文件上传。这个方法需要两个参数:文件字段的名称和上传文件的最大数量。在这个例子中,我们使用 files
作为文件字段的名称,并将最大文件数量设置为 10。
处理混合上传
要处理混合上传,即文件上传和表单数据的混合上传,您可以使用 upload.fields()
方法。请参考以下代码:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ------ - ----------------- ----- --- - --------- ----- ------ - -------- ----- ---------- -- ------------------- --------------- - ----- --------- --------- - -- - ----- ---------- --------- -- - --- ----- ---- -- - --------------- -------- -------------- -- ---------------- -- -- - ------------------- ------- -- ---- ------ --
在上面的代码中,我们使用 upload.fields()
方法来处理混合上传。这个方法需要一个数组作为参数。在这个数组中,我们定义了每个文件字段的名称和最大文件数量。在这个例子中,我们定义了 avatar
和 gallery
两个文件字段,并将最大文件数量分别设置为 1 和 10。
文件下载
文件下载是指从服务器向客户端计算机发送文件的过程。在 Express.js 中,我们可以使用 res.download()
方法来实现文件下载。
实现文件下载
要实现文件下载,您需要将要下载的文件的路径传递给 res.download()
方法。请参考以下代码:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- -------------------- ----- ---- -- - ----- -------- - --------------- ---------------------- -- ---------------- -- -- - ------------------- ------- -- ---- ------ --
在上面的代码中,我们定义了一个路由处理程序来处理文件下载。在这个处理程序中,我们将要下载的文件的路径传递给 res.download()
方法。在这个例子中,我们将要下载的文件路径设置为 /path/to/file
。
现在,当您访问 /download
路径时,文件将被下载到您的计算机中。
自定义文件名
如果您想自定义下载的文件名,您可以将自定义文件名作为第二个参数传递给 res.download()
方法。请参考以下代码:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- -------------------- ----- ---- -- - ----- -------- - --------------- ----- -------- - --------------------- ---------------------- --------- -- ---------------- -- -- - ------------------- ------- -- ---- ------ --
在上面的代码中,我们将自定义文件名设置为 custom-filename.txt
。当您访问 /download
路径时,文件将以自定义文件名下载到您的计算机中。
结论
在本文中,我们学习了如何使用 Express.js 中间件处理文件上传和下载。我们使用了 Multer 中间件来处理文件上传,并使用 res.download()
方法来实现文件下载。这些技术对于开发现代 Web 应用程序非常有用,希望这篇文章能够帮助您更好地理解和使用它们。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6758ffbd62956301acd432bb