【发布时间】:2020-04-30 04:43:42
【问题描述】:
我有这个错误信息:
(node:11976) DeprecationWarning: GridStore is deprecated, and will be removed in a future version. Please use GridFSBucket instead
有时我无法查看图片,我猜是因为文档不佳,我不知道如何将代码切换到 GridFSBucket,就是这样:
conn.once("open", () => {
// Init stream
gfs = Grid(conn.db, mongoose.mongo);
//gfs = new mongoose.mongo.GridFSBucket(conn.db);
gfs.collection("user_images");
});
var storageImage = new GridFsStorage({
url: dbURI,
options: { useNewUrlParser: true, useUnifiedTopology: true },
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString("hex") + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: "user_images"
};
resolve(fileInfo);
});
});
}
});
const uploadImage = multer({ storage: storageImage });
const uploadImage = multer({ storage: storageImage });
router.get("/image/:filename", (req, res) => {
gfs.files.findOne({ filename: req.params.filename }, (err, file) => {
if (!file || file.length === 0) {
return res.status(404).json({
err: "No file exists"
});
}
if (file.contentType === "image/jpeg" || file.contentType === "image/png") {
const readstream = gfs.createReadStream(file.filename);
//const readstream = gridFSBucket.openUploadStream(file.filename);
readstream.pipe(res);
} else {
res.status(404).json({
err: "Not an image"
});
}
});
});
非常感谢您的帮助,我需要在此处进行哪些更改才能使其与 GridFsBucket 一起使用,提前非常感谢!
【问题讨论】:
-
"..查看图片时出现问题.." 你的意思是用 html 格式预览吗?还是之后下载会导致错误?
标签: node.js gridfs gridfs-stream