node.js - 使用 mongoose、nodeJS、express、react 从 mongoDB 获取图像
问题描述
我一直在研究以下指南来上传和从 mongoDB 获取图像,并且在获取图像后在反应页面上重新显示时遇到问题。我认为问题出在 HTML img src 上,但它可能会更进一步,所以我无法完成我所做的一切。
服务器.js
// -------------------- Mongoose schema -------------------
var imageSchema = new mongoose.Schema({
img:
{
data: Buffer,
contentType: String
}
});
const offeringSchema = new mongoose.Schema({
image: [imageSchema]
});
const Image = mongoose.model("Image", imageSchema)
const Offering = mongoose.model("Offering", offeringSchema);
// -------------------- Set up Multer -------------------
const storage = multer.diskStorage({
destination: './public/uploads/images',
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() +
path.extname(file.originalname));
}
});
// -------------------- Post Offering Data -------------------
// upload featured offering image
app.post('/admin/OfferingFeatureImage', upload.single('featuredImage'), function (req, res) {
if (req.isAuthenticated()) {
if (req.user.userData[0].admin === true) {
console.log(req.file);
var newImage = new Image();
newImage.img.data = fs.readFileSync(req.file.path)
newImage.img.contentType = 'image/png';
Offering.updateOne({ _id: req.body.offeringID }, {image:[newImage]}, function (err) {
if (err) {
console.log(err)
} else {
res.redirect("/Admin/Offerings");
}
})
} else {
res.send("not-privileged")
}
} else {
res.redirect("/login")
};
});
// -------------------- Get Offering Data -------------------
app.get("/data/allInvestment", function (req, res) {
Offering.find({}, function (err, foundOfferings) {
if (err) {
res.send(err);
} else {
res.send(foundOfferings);
};
});
});
在客户端,我能够获取产品数据并看到 img 数据似乎存在
{props.investmentsData.image[0] !== undefined &&
<img src={"data:" + props.investmentsData.image[0].img.contentType + ";base64," + props.investmentsData.image[0].img.data.toString('base64')} className="card-img-top" alt="..."></img>
}
解决方案
推荐阅读
- r - 如何在 geom_text / nudge_y 中使用条件
- php - 在 ReactPHP 中发送响应后关闭服务器
- xml - 如何继承 qweb 报告模板并替换 odoo 中的元素
- sql - 查找包含所提供资源的所有人员
- r - R RegEx匹配重复捕获组的第n个和第m个元素
- r - 在 Prophet 中使用组和回归量进行预测
- string - Mongo:字符串转换为日期但不是“可查询的”
- django - 经过一段时间后如何在Django中运行函数
- php - PhpSpreadsheet 输出加密文本而不是开始下载
- python - Can anyone help me with setting up IBM_DB and python working environment?