Multer 是一个 Node.js 中间件,用于处理 multipart/form-data 类型的表单数据,主要用于文件上传。它是构建在 busboy 之上的一个更高级的库,专门用于处理文件上传,提供了方便的 API 来处理上传的文件。
Multer 支持多种存储引擎,包括:
以下是一个使用 Multer 进行图片上传的基本示例:
const express = require('express');
const multer = require('multer');
const app = express();
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('image'), (req, res) => {
if (!req.file) {
return res.status(400).send('No file uploaded.');
}
res.send('File uploaded successfully.');
});
app.listen(3000, () => {
console.log('Server started on http://localhost:3000');
});
在这个例子中,我们创建了一个 Express 应用,并配置了 Multer 来处理上传的文件。upload.single('image')
表示我们期望上传单个名为 'image' 的文件,并将其保存到 'uploads/' 目录下。
原因: 默认情况下,Multer 会对上传的文件大小进行限制。
解决方法: 配置 Multer 的 limits
选项来调整文件大小限制。
const upload = multer({
dest: 'uploads/',
limits: { fileSize: 5 * 1024 * 1024 } // 限制文件大小为 5MB
});
原因: 可能是因为没有设置文件类型过滤。
解决方法: 使用 fileFilter
选项来设置允许的文件类型。
const upload = multer({
dest: 'uploads/',
fileFilter: (req, file, cb) => {
if (file.mimetype.startsWith('image/')) {
cb(null, true);
} else {
cb(new Error('Only image files are allowed!'), false);
}
}
});
请注意,以上代码示例和配置可能需要根据实际项目需求进行调整。如果需要与云存储服务集成,可以参考相应服务的官方文档进行配置。
领取专属 10元无门槛券
手把手带您无忧上云