在 Web 应用程序中,文件上传和下载是常见的功能之一。在 Express.js 中,我们可以使用一些中间件和库来处理文件上传和下载。
文件上传
使用 multer
中间件
multer
是一个 Node.js 中间件,用于处理 multipart/form-data
类型的请求,它非常适合处理文件上传。我们可以使用 multer
中间件来处理文件上传。
首先,我们需要安装 multer
:
--- ------- ------
然后,我们可以在我们的 Express.js 应用程序中使用它:
----- ------- - ------------------- ----- ------ - ------------------ ----- --- - ---------- ----- ------ - -------- ----- ---------- --- ------------------- ---------------------- ----- ---- -- - -- ------- ------------------ --- ---------------- -- -- - ----------------------- ---
在上面的代码中,我们使用 multer
中间件来处理文件上传。upload.single('file')
表示我们只处理单个文件上传,上传的文件名为 file
。req.file
对象包含上传的文件的信息。
处理多个文件上传
如果我们需要处理多个文件上传,可以使用 upload.array('files')
方法,其中 files
表示上传的文件名。在处理多个文件上传时,req.files
对象包含上传的文件的信息数组。
------------------- ---------------------- ----- ---- -- - -- ------- ------------------ ---
限制文件类型和大小
我们可以通过在 multer
中间件中使用 limits
和 fileFilter
选项来限制文件类型和大小。
----- ------ - -------- ----- ----------- ------- - --------- ---- - ----- -- ------- - -- -- ----------- ----- ----- --- -- - ----- ------------ - -------------- ------------- -- --------- -- --------------------------------------- - ----- ----- - --- ----------------- ---------- - ------------------ ------ --------- ------- - -------- ------ -- ---
在上面的代码中,我们使用 limits
选项来限制文件大小为 1 MB。使用 fileFilter
选项来限制文件类型为 image/jpeg
和 image/png
。
完整的文件上传示例
以下是一个完整的文件上传示例,包括限制文件类型和大小:
----- ------- - ------------------- ----- ------ - ------------------ ----- --- - ---------- ----- ------ - -------- ----- ----------- ------- - --------- ---- - ----- -- ------- - -- -- ----------- ----- ----- --- -- - ----- ------------ - -------------- ------------- -- --------- -- --------------------------------------- - ----- ----- - --- ----------------- ---------- - ------------------ ------ --------- ------- - -------- ------ -- --- ------------------- ---------------------- ----- ---- -- - -- ------- ------------------ --- ---------------- -- -- - ----------------------- ---
文件下载
下载文件
在 Express.js 中,我们可以使用 res.download()
方法来下载文件。
-------------------- ----- ---- -- - ----- -------- - -------------- -------------------------------------- ---
在上面的代码中,我们使用 res.download()
方法来下载文件 example.txt
。文件位于 ./uploads/
目录下。
下载二进制数据
如果我们需要下载二进制数据,可以使用 res.set()
方法设置响应头,然后使用 res.send()
方法发送二进制数据。
-------------------- ----- ---- -- - ----- ---- - ------------------- -------- --------- ----------------------- -------------- ------------------------------ ------------ ------------------------- --------------- ---
在上面的代码中,我们使用 Buffer.from()
方法创建一个包含字符串 Hello, world!
的二进制数据。然后,我们使用 res.set()
方法设置响应头,将响应类型设置为 text/plain
,并将文件名设置为 example.txt
。最后,我们使用 res.send()
方法发送二进制数据。
完整的文件下载示例
以下是一个完整的文件下载示例:
----- ------- - ------------------- ----- --- - ---------- -------------------- ----- ---- -- - ----- -------- - -------------- -------------------------------------- --- --------------------------- ----- ---- -- - ----- ---- - ------------------- -------- --------- ----------------------- -------------- ------------------------------ ------------ ------------------------- --------------- --- ---------------- -- -- - ----------------------- ---
结论
在 Express.js 中,我们可以使用 multer
中间件来处理文件上传,使用 res.download()
方法和 res.send()
方法来处理文件下载和二进制数据下载。我们还可以通过使用 limits
和 fileFilter
选项来限制文件类型和大小。希望这篇文章能够帮助你处理文件上传和下载。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6725bec92e7021665e189a47