使用formidable来处理文件上传
前端开发小技巧
2026/06/03
本文约933个字符
JavaScript

在next.js后端服务中,上传文件接口获取到的body(req.body)为字符串,可以使用formidable库来快速处理文件上传的需求。

安装

language 复制代码
npm install formidable

如使用typescript,需安装其函数声明

language 复制代码
npm install @types/formidable

使用

首先创建IncomingForm对象

ts 复制代码
const form = new formidable.IncomingForm();

然后在API函数中使用,它会将文件上传到一个缓存目录,上传后的文件在回调函数的files参数中

js 复制代码
/*
* req为Request对象,在next.js中为NextApiRequest
* 回调函数中files为上传后的文件 Files类型同File | File[]
*/

form.parse(req, (err: Error, fields: Fields, files: Files) => {
    //单个文件的话使用files.file获取
    let file = files.file as File;
      
    //获取缓存文件的路径
    let tmpFilePath = file.filepath;
    
    //使用fs的rename函数将其移动到目标路径
    let targetFilePath = ''; //目标文件
    fs.renameSync(tmpFilePath, targetFilePath)
    
    //或者使用fs-extra中的move/moveSync函数亦可
    
});

创建IncomingForm对象时可选opyions,具体的内容参见其文档

ts 复制代码
const form = new formidable.IncomingForm(options);

formidable开源地址:https://github.com/node-formidable/formidable