我可以通过POST请求使用标准的Gridfs-stream实现将文件上传到mongodb。但是,当我需要通过GET请求查看文件元数据时,我得到了错误:
TypeError: Cannot read property 'files' of undefined显然,它没有认识到我对gfs.This的定义是我的路由处理器:
router.get('/image/:filename', (req, res) => {
gfs.files.find({filename: req.params.filename}, function(err, file) {
let readStream = gfs.createReadStream({filename: file.filename});
let data = '';
readStream.on('data', (chunk) => {
data += chunk.toString('base64');
})
readStream.on("error", function (err) {
res.send("Image not found");
});
readStream.pipe(res);
})
res.json();
});我以最简单的方式定义了gridfs-stream:
const conn = mongoose.createConnection(URI, {useNewUrlParser:true, useUnifiedTopology:true});
let gfs;
Grid.mongo = mongoose.mongo;
conn.once('open', () => {
gfs = Grid(conn.db);
gfs.collection('uploads');
});
const storage = new GridFsStorage({
url: URI,
file: (req, file) => {...}
});
const upload = multer({ storage });我不明白这里有什么问题,我被困了好几天!
发布于 2021-08-31 18:18:39
尝试使用以下命令:
app.get("/file/:filename", async (req, res) => {
try {
const file = await gfs.files.findOne({ filename: req.params.filename });
const readStream = gfs.createReadStream(file.filename);
readStream.pipe(res);
} catch (error) {
res.send("not found");
}
});
https://stackoverflow.com/questions/68987103
复制相似问题