文件上传、下载是现代 web 应用开发中常见的需求之一。Express.js 是一个流行的 Node.js 服务器框架,提供了一些强大的工具来处理文件上传、下载。本文将介绍如何在 Express.js 中高效地处理文件上传、下载,并提供相关的示例代码。
文件上传
在 Express.js 中处理文件上传需要使用 multer
中间件。下面是一个简单的示例:
const express = require('express'); const multer = require('multer'); const app = express(); const upload = multer({ dest: 'uploads/' }); app.post('/upload', upload.single('file'), (req, res) => { res.send('File uploaded successfully!'); });
在上面的示例中,我们首先引入了 multer
中间件,然后通过 multer({ dest: 'uploads/' })
创建了一个上传目录,最后通过 upload.single('file')
指定了上传文件的名称为 file
。当客户端上传一个文件时,服务器会将文件保存到 uploads/
目录下,并返回 File uploaded successfully!
信息。
multer
中间件还支持多文件上传,可以使用 array
或 fields
方法。下面是一个使用 fields
方法的示例:
const express = require('express'); const multer = require('multer'); const app = express(); const upload = multer({ dest: 'uploads/' }); app.post('/upload', upload.fields([{ name: 'file1', maxCount: 1 }, { name: 'file2', maxCount: 2 }]), (req, res) => { res.send('Files uploaded successfully!'); });
在上面的示例中,我们使用 upload.fields
方法指定了上传文件的名称和最大数量。当客户端上传文件时,服务器会将文件保存到 uploads/
目录下,并返回 Files uploaded successfully!
信息。
文件下载
在 Express.js 中处理文件下载需要使用 res.download
方法。下面是一个简单的示例:
const express = require('express'); const app = express(); app.get('/download', (req, res) => { const file = `${__dirname}/uploads/document.pdf`; res.download(file); });
在上面的示例中,我们使用 res.download
方法将文件发送给客户端下载,客户端会自动弹出下载框。当客户端下载完成时,服务器不会做任何响应。
res.download
方法还支持自定义文件名称和回调函数。下面是一个自定义文件名称的示例:
const express = require('express'); const app = express(); app.get('/download', (req, res) => { const file = `${__dirname}/uploads/document.pdf`; const filename = 'mydocument.pdf'; res.download(file, filename); });
在上面的示例中,我们使用自定义的文件名称 mydocument.pdf
代替了原有的文件名称 document.pdf
。
总结
通过使用 multer
中间件和 res.download
方法,我们可以在 Express.js 中高效地处理文件上传、下载。这些工具可以大大简化开发过程,并提高用户体验。在实际开发中,我们需要根据具体的需求进行适当的配置和定制,以达到最佳的效果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e2b665f6b2d6eab3dfa20a