文件上传快递 MongoDB Multer
File Upload Express MongoDB Multer
我正在尝试将图像上传到我的 Express Rest Api。我正在使用 Multer 来解析 multipart/form 图像。我想知道在服务器或数据库中保存图像的最佳做法是什么。以及我如何使用 Multer 实现这一目标。
用户模型:
var mongoose = require('mongoose');
var userSchema = mongoose.Schema({
email: {
type: String,
required: true
},
avatar: {
data: Buffer,
contentType: String
}
});
var User = module.exports = mongoose.model('user', userSchema, 'user');
module.exports.addUser = function(user, callback) {
User.create(user, callback);
};
用户路由器:
import multer from 'multer';
var upload = multer({ dest: 'uploads/' })
import User from '../models/user.js';
router.post('/register', upload.single('avatar'), (req, res) => {
var user = req.body;
user.avatar = req.file; //img file in the req.file
User.addUser(user, (err, user) => {
if(err) throw err;
res.json({
success: true,
user: user
});
})
});
这不会给我带来任何错误,但图像没有上传到数据库。任何帮助,将不胜感激。 (文件在服务器的上传目录中,编码为7位)
如果你想将图像直接存储到数据库中,你必须使用fs.readFileSync将图像获取为二进制文件然后保存它,注意req.file.path
returns 的完整路径上传的文件:
var user = req.body;
user.avatar.data = fs.readFileSync(req.file.path);
user.avatar.contentType = req.file.mimetype;
User.addUser(user, (err, user) => {
...
});
请记住,将图像存储为代表其 URL 的字符串可能比使用第一种方法更好、更容易,阅读此post了解更多信息
我正在尝试将图像上传到我的 Express Rest Api。我正在使用 Multer 来解析 multipart/form 图像。我想知道在服务器或数据库中保存图像的最佳做法是什么。以及我如何使用 Multer 实现这一目标。
用户模型:
var mongoose = require('mongoose');
var userSchema = mongoose.Schema({
email: {
type: String,
required: true
},
avatar: {
data: Buffer,
contentType: String
}
});
var User = module.exports = mongoose.model('user', userSchema, 'user');
module.exports.addUser = function(user, callback) {
User.create(user, callback);
};
用户路由器:
import multer from 'multer';
var upload = multer({ dest: 'uploads/' })
import User from '../models/user.js';
router.post('/register', upload.single('avatar'), (req, res) => {
var user = req.body;
user.avatar = req.file; //img file in the req.file
User.addUser(user, (err, user) => {
if(err) throw err;
res.json({
success: true,
user: user
});
})
});
这不会给我带来任何错误,但图像没有上传到数据库。任何帮助,将不胜感激。 (文件在服务器的上传目录中,编码为7位)
如果你想将图像直接存储到数据库中,你必须使用fs.readFileSync将图像获取为二进制文件然后保存它,注意req.file.path
returns 的完整路径上传的文件:
var user = req.body;
user.avatar.data = fs.readFileSync(req.file.path);
user.avatar.contentType = req.file.mimetype;
User.addUser(user, (err, user) => {
...
});
请记住,将图像存储为代表其 URL 的字符串可能比使用第一种方法更好、更容易,阅读此post了解更多信息