请问前后端分离项目 前端提交的formdata数据 后端如何接收并将formfata里面的文件保存到服务器上
时间: 2024-05-07 21:20:53 浏览: 102
前端提交的 FormData 数据可以使用后端的请求解析器进行解析,常用的有 multer、busboy、formidable 等。这些解析器都可以将 FormData 中的文件数据和普通数据解析出来。
以 multer 为例,可以使用以下代码进行解析:
```javascript
const multer = require('multer');
const upload = multer({ dest: 'uploads/' }); // 设置上传文件的保存目录
app.post('/upload', upload.single('file'), (req, res) => {
// req.file 是上传的文件数据
// req.body 是 FormData 中的其他普通数据
res.send('上传成功');
});
```
其中,`upload.single('file')` 表示只上传单个文件,文件的字段名为 `file`。解析出来的文件数据会保存在 `req.file` 中,其他普通数据会保存在 `req.body` 中。
接下来,可以使用文件系统模块(如 fs 模块)将文件保存到指定目录,例如:
```javascript
const fs = require('fs');
fs.writeFile('uploads/' + req.file.originalname, req.file.buffer, (err) => {
if (err) {
console.error(err);
res.send('保存文件失败');
} else {
res.send('上传成功');
}
});
```
其中,`req.file.originalname` 是上传的文件名,`req.file.buffer` 是文件的二进制数据。将二进制数据写入文件即可保存到服务器上。
阅读全文