[英]Convert a collectionFS file from filesystem to gridFS on serverside
在我們的流星應用程序中,客戶端將使用collectionFS文件系統上傳一些文件,我將其存儲到應用程序根目錄中的上載文件夾中。
//My CFS uploads collection
uploads = new FS.Collection("uploads", {
stores: [new FS.Store.FileSystem("uploads", {path: "~/uploads"})]
});
稍后,我想使用collectionFS-gridFS將文件保存到數據庫。
//My CFS grid collection
files = new FS.Collection("files", {
stores: [new FS.Store.GridFS("files")]
});
如何從服務器上的文件讀取數據,以便可以將文件存儲到數據庫? 無論如何,我是否可以使用CFS文件系統集合中的文件將其轉換為CFS-gridFS文件?
提前致謝。
我已經接受@perusopersonale的回答。 但是,以下是我用來實現此目標的方法,該方法基於此處和此處的文檔
uploads.find(document_id).forEach(function (fileObj) {
var type = fileObj.type();
var name = fileObj.name();
var readStream = fileObj.createReadStream(fileObj.collectionName);
var newFile = new FS.File();
newFile.attachData(readStream, {type: type});
newFile.name(name);
files.insert(newFile);
});
我不明白您為什么要同時使用兩者。 但是,我必須實現類似的操作(從cfs文件系統讀取,執行某些操作,然后重新插入另一個db),這里修改了一個版本,可以完成您要執行的操作:
var fileObj = uploads.findOne(objId);
var newName = "newfilename"; //file name
//fileObj.copies.uploads.key contains the filename for store :"uploads"
fs.readFile( "~/uploads/"+fileObj.copies.uploads.key, function (err, data) {
var newFile = new FS.File();
newFile.attachData(data,{type: 'application/octet-stream'}, function(error){
newFile.name( newName);
file.insert(newFile);
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.