Node.js 中处理文件是非常常见的需求,尤其在开发企业内部工具、数据处理脚本、后台接口时。下面是整理的 「常见文件处理需求清单」,并附带每类推荐使用的模块/方法。
📂 一、通用文件操作
| 需求 | 示例描述 | 推荐方法/模块 |
|---|
| 读取文件 | 读取 .txt、.json、.csv 等 | fs.readFileSync / fs.promises.readFile |
| 写入文件 | 把数据写入一个文件 | fs.writeFileSync / fs.promises.writeFile |
| 复制文件 | 上传文件后复制到另一个位置 | fs.copyFileSync |
| 删除文件 | 清理上传目录 | fs.unlinkSync |
| 遍历文件夹 | 批量读取文件名、批量处理 | fs.readdirSync |
| 创建/删除文件夹 | 创建临时目录,递归删除 | fs.mkdirSync / fs.rmSync(Node 14+) |
📊 二、表格类文件(Excel/CSV)
| 需求 | 示例描述 | 推荐库 |
|---|
读取 Excel .xlsx 文件 | 读取工作簿并转成 JSON | xlsx |
| 写入 Excel 文件 | 导出查询结果为 Excel | xlsx / exceljs |
| 样式化 Excel 文件 | 设置字体颜色、单元格背景等 | exceljs |
| CSV 文件解析 | 读取 .csv 转数组 | csv-parser / csv-parse |
| 写入 CSV 文件 | 批量导出数据 | csv-writer |
📄 三、PDF 和文档处理
| 需求 | 示例描述 | 推荐库 |
|---|
| 生成 PDF 文件 | 后端导出发票、合同 | pdfkit / puppeteer(转网页为 PDF) |
| 合并多个 PDF | 合并多个用户上传的文件 | pdf-lib / hummus |
| 读取 PDF 内容 | 提取 PDF 文本 | pdf-parse(限英文) |
| Word 转 PDF | 限于使用第三方服务或 LibreOffice | |
🖼 四、图片和媒体文件
| 需求 | 示例描述 | 推荐库 |
|---|
| 图片压缩 | 上传图片瘦身 | sharp(高性能图像处理库) |
| 格式转换 | .png 转 .jpg | sharp |
| 获取图片尺寸 | 用于前端展示尺寸比例 | image-size |
| 视频处理 | 视频转码、抽帧 | fluent-ffmpeg(基于 FFmpeg) |
📦 五、压缩与解压缩
| 需求 | 示例描述 | 推荐库 |
|---|
解压 .zip | 读取上传的 zip 包 | adm-zip / unzipper |
| 压缩文件 | 批量打包导出 | archiver |
处理 .tar.gz | Linux 系统压缩格式 | tar 模块(内置) |
🛠 六、上传 / 下载文件(常配合接口)
| 需求 | 示例描述 | 推荐库 |
|---|
| 接收上传文件 | 上传 Excel、图片、压缩包等 | multer(Express 中间件) |
| 生成下载文件 | 接口生成 Excel、PDF 并下载 | res.download() / res.attachment() |
| 分片上传大文件 | 上传视频等大文件 | 客户端分片 + 服务端合并 |
📁 七、文件内容处理(文本类)
| 需求 | 示例描述 | 推荐工具 |
|---|
读取 .env 配置文件 | .env -> 环境变量 | dotenv |
| 扫描文件内容 | 批量读取 Markdown、日志 | fs + glob |
| 搜索/替换文本 | 替换路径、关键字 | fs + 正则 |
| 解析 YAML 配置 | .yml 文件解析 | js-yaml |
🎯 场景举例:数据处理小工具
比如:上传 Excel -> 转成 JSON -> 批量写入数据库 -> 返回处理结果下载链接
涉及到的处理链条:
- 文件上传:
multer
- 解析 Excel:
xlsx
- 数据验证 & 转换:自定义逻辑
- 写入数据库:
mongoose / prisma
- 导出 Excel 报告:
xlsx / exceljs
- 提供下载链接:
res.download()