Muter是一个node.js中间件。主要处理multupart/from-data类型的表单数据,常用于上传文件。在express.js应用中,multer使得上传文件变得更加简单。主要功能是将客户端上传的文件存储在服务器的本地文件系统中。它还添加了一个body对象以及file或files对象到express的请求对象中去。
代码如下所示
用这个首先当前Node下要有图片存储目录的那个文件夹的? 然后普通的把js文件跑起来?
const express = require('express');
const multer = require('multer');
const app = express();
const fs = require('fs');
const upload = multer({ dest: 'uploads/' }); // 设置图片存储目录
const port = 3000;
const { promisify } = require('util');
const rename = promisify(fs.rename)
app.get('/image', (req, res) => {
try {
const imagePath = `uploads/${req.query.imageName}` // 假设图片存储在uploads目录下
const imageBuffer = fs.readFileSync(imagePath); // 读取图片文件为Buffer类型
res.setHeader('Content-Type', 'image/jpeg'); // 设置响应头为图片类型
res.send(imageBuffer); // 将图片发送给客户端
} catch (err) {
res.send({
code: 500,
msg: '服务器故障',
error:err
})
}
});
app.post('/upload', upload.single('upfile'), async function (req, res, next) {
try {
let fileArr = req.file.originalname.split('.')
let filetype = fileArr[fileArr.length - 1]
await rename(
'./uploads/' + req.file.filename,
'./uploads/' + req.file.filename + '.' + filetype
)
res.send('文件上传成功!');
} catch (err) {
res.send({
code: 500,
msg: '服务器故障',
error:err
})
}
})
app.listen(port, () => {
console.log(`Server started on port ${port}`);
});
上图为文件上传成功截图
上图为获取文件截图
node.js yyds