Node.js 常见文件处理

86 阅读2分钟

Node.js 中处理文件是非常常见的需求,尤其在开发企业内部工具、数据处理脚本、后台接口时。下面是整理的 「常见文件处理需求清单」,并附带每类推荐使用的模块/方法。


📂 一、通用文件操作

需求示例描述推荐方法/模块
读取文件读取 .txt.json.csvfs.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 文件读取工作簿并转成 JSONxlsx
写入 Excel 文件导出查询结果为 Excelxlsx / 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.jpgsharp
获取图片尺寸用于前端展示尺寸比例image-size
视频处理视频转码、抽帧fluent-ffmpeg(基于 FFmpeg)

📦 五、压缩与解压缩

需求示例描述推荐库
解压 .zip读取上传的 zip 包adm-zip / unzipper
压缩文件批量打包导出archiver
处理 .tar.gzLinux 系统压缩格式tar 模块(内置)

🛠 六、上传 / 下载文件(常配合接口)

需求示例描述推荐库
接收上传文件上传 Excel、图片、压缩包等multer(Express 中间件)
生成下载文件接口生成 Excel、PDF 并下载res.download() / res.attachment()
分片上传大文件上传视频等大文件客户端分片 + 服务端合并

📁 七、文件内容处理(文本类)

需求示例描述推荐工具
读取 .env 配置文件.env -> 环境变量dotenv
扫描文件内容批量读取 Markdown、日志fs + glob
搜索/替换文本替换路径、关键字fs + 正则
解析 YAML 配置.yml 文件解析js-yaml

🎯 场景举例:数据处理小工具

比如:上传 Excel -> 转成 JSON -> 批量写入数据库 -> 返回处理结果下载链接

涉及到的处理链条:

  1. 文件上传:multer
  2. 解析 Excel:xlsx
  3. 数据验证 & 转换:自定义逻辑
  4. 写入数据库:mongoose / prisma
  5. 导出 Excel 报告:xlsx / exceljs
  6. 提供下载链接:res.download()