Express框架下的多文件下载实现与前端调用

需积分: 0 0 下载量 148 浏览量 更新于2024-08-03 收藏 2KB MD 举报
在本文档中,我们将深入探讨如何利用Node.js框架Express实现多文件下载功能。首先,我们通过创建一个简单的Express应用程序来定义两个关键路由:一个是用于获取文件列表的接口,另一个是处理文件下载请求。 **一、下载接口实现** 1. 导入必要的模块:`express`(用于创建应用和路由器)、`path`(处理文件路径)和`fs`(提供文件系统操作)。主要的路由处理函数是`router.get('/getfile', ...)`,它接收一个GET请求,并从服务器的`public/upload/`目录中获取所有文件。 2. 使用`fs.readdir()`异步读取文件夹中的所有文件和子目录。如果读取成功,遍历文件数组,对每个文件检查是否为文件(而非目录),如果是,则创建一个对象包含文件名(`fileName`)和指向文件的下载URL(`downloadUrl`),将这些对象推入`arr`数组。 3. 最后,将包含所有文件信息的`arr`作为JSON响应返回给前端。 **二、下载文件接口** 当接收到下载请求时,`router.get('/download', ...)`负责实际的下载过程。这里通过`req.query.name`获取请求中的文件名,构造文件完整路径。然后,使用`res.download()`方法将文件发送回客户端,这将自动设置Content-Disposition头以启动浏览器的下载对话框。如果下载过程中出现错误,捕获异常并返回错误代码。 **三、前端页面** 前端部分没有给出具体的代码,但通常会有一个HTML表单或按钮,用户点击后发起GET请求到`/getfile`获取文件列表,或者直接通过链接触发下载。前端会根据从服务器返回的文件信息动态构建下载链接或者显示文件列表供用户选择。 总结: 本文提供了如何在Express中实现一个基本的多文件下载功能的步骤。通过创建两个HTTP路由,一个用于获取文件列表,另一个用于处理文件下载请求,可以方便地让用户在前端页面上选择和下载服务器上的文件。这种方式适用于小型应用或静态文件分享场景,对于更大规模的文件下载需求,可能需要考虑使用更专业的文件服务器或流处理技术。