TypeScript + Express 实现文件下载接口


要在 TypeScript + Express 中实现文件下载接口,可以遵循以下步骤:

  1. 首先,确保您的应用程序已经使用了 express@types/express(如果使用 TypeScript)包。您可以使用以下命令来安装这些软件包:

    npm install express @types/express
    
  2. 然后,在您的 TypeScript 文件中导入所需的模块和库,例如:

    import { Request, Response } from 'express';
    import * as fs from 'fs';
    
  3. 创建一个路由处理程序,该处理程序将负责处理下载请求。此处理程序应读取要下载的文件并将其作为响应发送回客户端。例如:

    app.get('/download/:filename', (req: Request, res: Response) => {
      const filename = req.params.filename;
      const file = `${__dirname}/downloads/${filename}`;
    
      // 检查文件是否存在
      if (!fs.existsSync(file)) {
        return res.status(404).send('File not found');
      }
    
      // 设置响应头以指定内容类型和编码
      res.setHeader('Content-Type', 'application/octet-stream');
      res.setHeader('Content-Disposition', `attachment; filename=${filename}`);
      res.setHeader('Content-Transfer-Encoding', 'binary');
    
      // 读取文件并将其作为响应发送回客户端
      const filestream = fs.createReadStream(file);
      filestream.pipe(res);
    });
    

在上面的示例中,我们首先从请求参数中获取要下载的文件名,并检查该文件是否存在。如果文件不存在,我们返回 404 状态码和一条错误消息。

然后,我们设置响应头以指定内容类型、编码和文件名,并使用 fs.createReadStream() 方法读取文件。最后,我们将文件流传送到响应对象中,这样客户端就可以开始下载该文件了。

请注意,上面的示例只是一个基本示例,您可能需要根据自己的需求进行修改和扩展。例如,您可能想要添加身份验证、限制对某些文件的访问权限等。


嘿手大叔 2024年12月13日 11:06 收藏文档