Storing data stream from POST request in GridFS, express, mongoDB, node.js

后端 未结 5 1718
予麋鹿
予麋鹿 2020-12-01 05:53

I am trying to figure out how I can post an image directly to GridFS without storing it anywhere on the server as a temporary file first.

I am using Postman (chrome

5条回答
  •  醉梦人生
    2020-12-01 06:14

    complete code to post the image from html to nodejs store that image in mongodb using gridfs system and display that image in server.This code works well.

    var express=require("express");
    var bodyparser=require("body-parser");
    var multer=require("multer");
    var app=express();
    var upload = multer({ dest: '/tmp/'});
    app.use(bodyparser.urlencoded({extended:false}));
    app.post("/uploadimage",upload.single("file"),function(request,response)
    {
        var mongoose=require("mongoose");
        var gridfsstream=require("gridfs-stream");
        var fs=require("fs");
        mongoose.connect("mongodb://localhost:27017/testimage");
        var con=mongoose.connection;
        gridfsstream.mongo=mongoose.mongo;
        con.once("open",function()
        {
            console.log("test image database connected successfully");
            var gfs=gridfsstream(con.db);
            var readstream=fs.createReadStream(request.file.originalname);
            var writestream=gfs.createWriteStream({
                filename:"mentorpicthree.jpg"
            });
            readstream.pipe(writestream);
            writestream.on("close",function()
            {
                console.log("image stored in mongodb database successfully");
                fs.readFile(request.file.originalname,function(err,data)
                {
                    if(err)
                    {
                        response.writeHead(404,{"Content-Type":"text/plain"});
                        console.log("error");
    
                    }
                    else
                    {
                            response.writeHead(200,{"Content-Type":"image/jpg"});
                            response.end(data);
                    }
                });
            });
            writestream.on("error",function()
            {
                console.log("image not stored in mongodb database");
            });
    
        });
        con.on("error",function()
        {
            console.log("database not connected try again!!!");
        });
    
    });
    app.listen(8086,function()
    {
        console.log("server running on port 8086");
    });
    
    
        FILE UPLOAD
    
    
    

    Ryan Dhal


提交回复
热议问题