2017-07-12 10 views
-2

Node.jsを使用してMongoDBに直接、1MBのサイズのWord文書とPDFファイルを保存して取得したいとします。どのように私はこれについて何か記事を説明するか、またはこれについて私を助けることができますこれを行うことができます。docファイルをMongodbに直接アップロードする

答えて

0

ファイルをバイナリデータとしてMongoDBに保存するスタンドアロンノードのjsコードです。最大ファイルサイズは1MBなので、GridFではなく通常のコレクションで保存できます。

"express"または "hapi"フレームワークを使用してWebアプリケーションとして実行するように拡張することができます。それについてはそれぞれのチュートリアルを参照する必要があります。

保存MongoDBの中にバイナリデータとしてファイル: -

注:私は「ドキュメント」ディレクトリにサンプルファイルがあります。だから、ドキュメントのプレフィックスとして「/docs/testplan.docx」を付けました。あなたはそれを必要としない場合は削除することができます。

var MongoClient = require('mongodb').MongoClient; 
var Binary = MongoClient.Binary; 
var fs = require('fs'); 
var assert = require('assert'); 

var url = 'mongodb://localhost:27017/test'; 

var binaryFileData = fs.readFileSync(__dirname + "/docs/testplan.docx"); 

var insertDocument = function(db, callback) { 
    db.collection('file_save').insertOne({ 
     "fileName" : "testplan.docx", 
     "fileData" : binaryFileData 
    }, function(err, result) {  
     assert.equal(err, null); 
     console.log("Inserted a document into the collection."); 
     callback(); 
    }); 
}; 

MongoClient.connect(url, function(err, db) { 
    assert.equal(null, err); 
    insertDocument(db, function() { 
     console.log("Closing the database connection...") 
     db.close(); 
    }); 
}); 

ファイルのデータを読み取り、それをディスクに保存します - 完全に大丈夫に動作し

var MongoClient = require('mongodb').MongoClient; 
var Binary = MongoClient.Binary; 
var fs = require('fs'); 
var assert = require('assert'); 

var url = 'mongodb://localhost:27017/test'; 

var findDocument = function (fileName, db, callback) { 
    db.collection('file_save').findOne({"fileName" : fileName }, function (err, document) { 
    assert.equal(null, err); 
    console.log(document.fileName); 
    fs.writeFileSync("testplan_out.docx", document.fileData.buffer); 
    console.log("File has been written to disk"); 
    callback(); 
    }); 

}; 

MongoClient.connect(url, function (err, db) { 
    assert.equal(null, err); 
    findDocument("testplan.docx", db, function() { 
    db.close(); 
    }); 
}); 
+0

私のコードの下に表示される方法を教えてください – Arjun

0

を!しかし、私はからPOSTMANにアップロードしようとしています。平均スタックでプロジェクトを開発しています。私はこのようにしようとしていたが、結果がMongoDBのためにアップロードされていない

//document-model.js 
var mongoose = require('mongoose'), 
    Schema = mongoose.Schema; 
var documentSchema = { 
    docFile: { 
     type: String 
    } 
}; 
mongoose.model('FileDocument', documentSchema); 

//document-route.js 
var express = require('express'), 
    documentRoute = express.Router(), 
    document = require('../controllers/document-controller'); 

documentRoute.post('/upload', document.uploadDocument); 
module.exports = documentRoute; 


//document-controller.js 
var document = { 
    uploadDocument: function (req, res) { 
     var fileDocument = new FileDocument({ 
      docFile: req.body.docFile 
     }); 
     fileDocument.save(function (err, result) { 
      if (err) { 
       res.status(500).send(err); 
      } else { 
       res.status(200).send('Document Uploaded Successfully'); 
      } 
     }); 
    } 
}; 

のmongoシェルになります。

{ "_id" : ObjectId("59693872b8b83f42b42a3b9f"), "docFile" : "", "__v" : 0 } 
関連する問題