sql >> データベース >  >> NoSQL >> MongoDB

アップロード後、ExpressJSを使用してMongoのGridFSにファイルを保存します

    簡単なデモは次のとおりです。

    var express = require('express');
    var fs      = require('fs');
    var mongo   = require('mongodb');
    var Grid    = require('gridfs-stream');
    var db      = new mongo.Db('test', new mongo.Server("127.0.0.1", 27017), { safe : false });
    
    db.open(function (err) {
      if (err) {
        throw err;
      }
      var gfs = Grid(db, mongo);
      var app = express();
    
      app.use(express.bodyParser());
      app.post('/upload', function(req, res) {
        var tempfile    = req.files.filename.path;
        var origname    = req.files.filename.name;
        var writestream = gfs.createWriteStream({ filename: origname });
        // open a stream to the temporary file created by Express...
        fs.createReadStream(tempfile)
          .on('end', function() {
            res.send('OK');
          })
          .on('error', function() {
            res.send('ERR');
          })
          // and pipe it to gfs
          .pipe(writestream);
      });
    
      app.get('/download', function(req, res) {
        // TODO: set proper mime type + filename, handle errors, etc...
        gfs
          // create a read stream from gfs...
          .createReadStream({ filename: req.param('filename') })
          // and pipe it to Express' response
          .pipe(res);
      });
    
      app.listen(3012);
    });
    

    httpie を使用しています ファイルをアップロードするには:

    http --form post localhost:3012/upload [email protected]~/Desktop/test.png
    

    ファイルがアップロードされているかどうかをデータベースで確認できます:

    $ mongofiles list -d test
    connected to: 127.0.0.1
    test.png    5520
    

    もう一度ダウンロードすることもできます:

    http --download get localhost:3012/download?filename=test.png
    



    1. Mongodb-不正なクエリ:BadValue不明なトップレベル演算子:$ gte

    2. MongoDB:DBへの接続を確認してください

    3. Meteorクライアント側ソートコレクション

    4. Mongoデーモンはサービスmongodstartでは実行されません