sql >> Database >  >> NoSQL >> MongoDB

MongoDB, Express, Node.Js en GridFS-stream gebruiken voor het opslaan van video- en afbeeldingsbestanden

Je kunt direct uploaden zonder mongoose met behulp van gridfs-stream zo simpel als:

var express = require('express'),
    mongo = require('mongodb'),
    Grid = require('gridfs-stream'),
    db = new mongo.Db('node-cheat-db', new mongo.Server("localhost", 27017)),
    gfs = Grid(db, mongo),
    app = express();

db.open(function (err) {
    if (err) return handleError(err);
    var gfs = Grid(db, mongo);
    console.log('All set! Start uploading :)');
});

//POST http://localhost:3000/file
app.post('/file', function (req, res) {
    var writeStream = gfs.createWriteStream({
        filename: 'file_name_here'
    });
    writeStream.on('close', function (file) {
        res.send(`File has been uploaded ${file._id}`);
    });
    req.pipe(writeStream);
});

//GET http://localhost:3000/file/[mongo_id_of_file_here]
app.get('/file/:fileId', function (req, res) {
    gfs.createReadStream({
        _id: req.params.fileId // or provide filename: 'file_name_here'
    }).pipe(res);
});

app.listen(process.env.PORT || 3000);

voor volledige bestanden en lopend project:

Clone node-cheat direct_upload_gridfs , voer node app uit gevolgd door npm install express mongodb gridfs-stream .

OF

Volg de babystappen op Node-Cheat Direct uploaden via GridFS README.md



  1. Korte, unieke object-ID's maken in MongoDB

  2. Kan geoNear in MongoDB een subset van velden in een document retourneren?

  3. hoe de caching vrij te geven die wordt gebruikt door Mongodb?

  4. Werk een enkel veld in MongoDB bij in een enkel ingesloten document