GridFS响应返回多个图像

时间:2019-04-21 17:23:31

标签: node.js mongodb express gridfs gridfs-stream

我正在开发一个Web应用程序,该应用程序涉及使用GridFS将图像上传到DB。我已经可以上载了,但是,每当我尝试下载上载的文件时,得到的响应都包含多个图像。我只想买一个。我该如何解决?

如果有帮助,我正在使用GridFS,Mongoose,gridfs-stream和Express。

编辑:我尝试下载所获得的图像,所下载的是两张图像,而不是我想要的一张图像。

mongoose.connect("mongodb://localhost:27017/formImgs", { useMongoClient: true });

var conn = mongoose.connection;
Grid.mongo = mongoose.mongo;

conn.once("open", () => {
    var gfs = Grid(conn.db);

    for(var i = 0; i < fileNames.length; i++){
        var filesrc = path.join(__dirname, "./photos/" + fileNames[i]);

        var writeStream = gfs.createWriteStream({
            filename: fileNames[i],
            contentType: "image/png"
        });

        fs.createReadStream(filesrc).pipe(writeStream);

        writeStream.on("close", (file) => {
            console.log("Done uploading!");
        });
    }

    app.get("/", (req, res) => {
        gfs.files.findOne({filename: "LaptopRegistry.png"}, (err, file) => {
            var readStream = gfs.createReadStream(file.filename);
            readStream.pipe(res); // Multiple images are returned when I use this
        });
    });

    app.get("/image/:filename", (req, res) => {
        gfs.files.findOne({filename: "LaptopRegistry.png"}, (err, file) => {
            var readStream = gfs.createReadStream(file.filename);
            return res.json(file); // i get only one JSON when I run this
        });
    });

    app.listen(5000, () => console.log("Server started on port 5000"));
});

0 个答案:

没有答案