如何用 express 接收文件 formdata js

如何用 express 接收文件 formdata js

express 是一个 nodejs 的后台框架,如何接收文件并存储文件呢。

一、需要用到 multer

multerexpress 用于处理 multipart/form-data 类型数据的中间件,它可以实现存储发送过来的 formData 中的文件。

具体看官方文档:

https://github.com/expressjs/multer

二、multer 安装

npm i multer

# 或

yarn add multer

三、multer 使用

const express = require('express')
const router = express.Router()

const multer = require('multer')
const upload = multer({dest: 'upload'}) // 1.定义文件的存放位置,不带 / 的是相对位置


// 2.存储 FormData 中名为 'dict' 的文件
router.post('/upload-dict', upload.single('dict'), (req, res, next) => {
	// 3. 存储后的文件信息在 req.file 中,此时文件已经存储到本地了。
	console.log(req.file)
})

在这里插入图片描述
在这里插入图片描述

四、不存储文件,只获取其内容。

如果你不想存储这个文件,只是想读取其内容,就需要将中间件的参数由下面这个改为后面那个

const upload = multer({dest: 'upload'})
const storage = multer.memoryStorage()
const upload = multer({ storage: storage })

此时 req.file 参数中会多出一个名为 buffer 的字段,文件内容就在这个 buffer 中。

五、延伸阅读

用 express 进行文件上传下载操作可能会遇到 413 的错误,这样解决:

解决:nodejs express 框架出现 413 错误 request entity too large

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Node.js中使用FormData可以实现多文件上传。下面是一个简单的示例代码: 首先,需要引入相关的模块: ``` const http = require('http'); const fs = require('fs'); const FormData = require('form-data'); ``` 然后,创建一个FormData对象,用于存储要上传的文件: ``` const formData = new FormData(); ``` 接下来,可以通过append方法向FormData对象中添加要上传的文件: ``` formData.append('file1', fs.createReadStream('path/to/file1.txt')); formData.append('file2', fs.createReadStream('path/to/file2.txt')); ``` 然后,创建一个请求对象: ``` const options = { hostname: 'localhost', port: 8000, path: '/upload', method: 'POST', headers: formData.getHeaders() }; const req = http.request(options, (res) => { // 处理服务器的响应 }); // 将FormData对象写入请求体 formData.pipe(req); req.on('error', (err) => { console.error(err); }); req.end(); ``` 最后,需要在服务器端接收并处理文件上传的请求。可以使用`multer`模块来处理文件上传: ``` const express = require('express'); const multer = require('multer'); const app = express(); const upload = multer({ dest: 'uploads/' }); app.post('/upload', upload.array('file', 2), (req, res) => { console.log(req.files); res.status(200).send('File uploaded successfully'); }); app.listen(8000, () => { console.log('Server started on port 8000'); }); ``` 上面的示例代码为使用Express框架,当有文件上传请求时,会将文件保存到`uploads/`目录下,并打印上传的文件信息到控制台。 这就是使用Node.js中的FormData实现多文件上传的简单示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月ooOO

许个愿,我帮你实现

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值