我想用Node.js直接在MongoDB中保存和檢索大小爲1 MB的Word文檔和PDF文件。我該如何做到這一點是否有任何文章解釋或可以幫助我解決這個問題。直接在Mongodb上傳文檔文件
-2
A
回答
0
這裏是獨立節點js代碼將文件保存爲MongoDB中的二進制數據。由於最大文件大小爲1MB,因此您可以將其保存在普通收藏夾中而不是GridF中。
這可以擴展爲使用「express」或「hapi」框架作爲網絡應用程序運行。您可能需要參考相應的教程。
將文件保存爲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
的作品完全沒有問題!但我想上傳文件從POSTMAN和我正在開發我的項目與MEAN堆棧。
//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');
}
});
}
};
我是想用這種方式,但它不上傳到MongoDB的結果是給出了蒙戈外殼。
{ "_id" : ObjectId("59693872b8b83f42b42a3b9f"), "docFile" : "", "__v" : 0 }
相關問題
- 1. reactjs mongodb - 如何上傳文件並保存在mongodb文檔中
- 2. 直接上傳文件
- 3. 直接上傳文件到文件夾
- 4. 上傳文檔文件
- 5. django文件上傳直接緩衝區
- 6. jQuery文件直接上傳到S3
- 7. Express - 通過直接POST上傳文件
- 8. 將文件直接上傳到網頁
- 9. 直接從GAE上傳文件到S3
- 10. 直接上傳到Rackspace的雲文件
- 11. 直接上傳文件到azure?
- 12. 上傳pdf文件在谷歌文檔
- 13. 上傳JSON文件到MongoDB
- 14. 如何連接併發送文件到MongoDb角文件上傳
- 15. 如何直接在MongoDB的shell中生成文檔列表?
- 16. 文檔上傳
- 17. 直接解析文件上傳而不寫入文件系統
- 18. 用直接文件上傳替換表單輸入文件
- 19. 如何直接上傳原始文件與jQuery文件到S3上傳
- 20. 文件上傳到Google文檔
- 21. Zend1表格上傳文檔文件
- 22. 已上傳文件至Google文檔
- 23. 無法上傳文檔和docx文件
- 24. 使用PHP上傳文檔文件
- 25. Laravel 5安全上傳文檔文件
- 26. 從文件直接上傳文本到數據庫asp.net5 MVC 6
- 27. azure文件存儲訪問文檔與直接鏈接
- 28. 在MongoDb上查找多文檔值到一個文檔中
- 29. 谷歌文檔API - 上傳XML文檔
- 30. MongoDB文檔
你可以請讓我知道如何做你可以看到我的代碼如下 – Arjun