使用mongoose通过multer上传文件的步骤如下:
npm install mongoose multer
const mongoose = require('mongoose');
const multer = require('multer');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/') // 上传文件的存储路径
},
filename: function (req, file, cb) {
cb(null, file.originalname) // 上传文件的文件名
}
});
const upload = multer({ storage: storage });
const fileSchema = new mongoose.Schema({
filename: String, // 文件名
path: String, // 文件路径
size: Number, // 文件大小
mimetype: String // 文件类型
});
const File = mongoose.model('File', fileSchema);
app.post('/upload', upload.single('file'), async (req, res) => {
try {
// 从multer中获取上传的文件信息
const { filename, path, size, mimetype } = req.file;
// 创建一个新的文件记录
const file = new File({
filename,
path,
size,
mimetype
});
// 将文件记录保存到数据库中
await file.save();
res.status(200).send('File uploaded successfully');
} catch (error) {
res.status(500).send('Error uploading file');
}
});
以上代码中,upload.single('file')
表示只允许上传单个文件,且文件字段名为file
。你可以根据实际需求进行修改。
mongoose.connect('mongodb://localhost/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => {
app.listen(3000, () => {
console.log('Server started on port 3000');
});
})
.catch(err => console.log(err));
在上述代码中,mongodb://localhost/mydatabase
表示连接到本地MongoDB数据库的mydatabase
数据库。你可以根据实际情况修改连接字符串。
现在,你可以使用Postman或其他工具发送POST请求到/upload
路由,并在请求中包含一个名为file
的文件字段,即可实现通过mongoose和multer上传文件的功能。
注意:以上代码仅为示例,实际应用中可能需要进行错误处理、文件大小限制、文件类型限制等其他处理。
领取专属 10元无门槛券
手把手带您无忧上云