2014-02-12 61 views
1

試圖將照片插入數據庫時​​,我已經收到上述錯誤。奇怪的是,文檔的文件側插入正常,但沒有任何東西被插入到塊側。我環顧網絡,但沒有得到任何提示,問題可能是什麼。有沒有人看到這個錯誤,並可以幫助?CollectionFS錯誤 - 未捕獲錯誤:CollectionFS:file.slice不受支持?

這是我的代碼。

collections.js

PhotosFS = new CollectionFS('photos'); 

PhotosFS.allow({ 
    insert: function (userId, file) { 
     return userId && file.owner === userId; 
    } 
}); 

events.js

Template.createPhotos.events({ 
    "change input[type='file']": function (e, tmpl) { 
     var file = e.target.files; 
     Session.set('currentFile', file[0]); 
    }, 
    "click .save-button": function (e, tmpl) { 
     var file = Session.get('currentFile'); 
     PhotosFS.storeFile(file, { 
       name: name, 
       photographer: photographer, 
       caption: caption, 
     }); 
    } 
}); 

回答

0

我猜它是與存儲會話中的文件上傳到數據庫之前,因爲如果你直接上傳上傳的輸入文件更改後的文件可以正常上傳。當它從輸入文件更改事件直接上傳時,它將作爲文件上載。但是,當它存儲在會話中然後上傳時,它會作爲對象上傳。我猜CollectionFS塊不能識別對象。我不知道。但我確實知道,在輸入文件更改事件後直接上傳文件的特定應用程序沒有任何意義。

但我想我必須要做到這一點

Template.createPhotos.events({ 
    "change input[type='file']": function (e, template) { 
     var file = e.target.files; 
     var fileId = PhotosFS.storeFile(file[0]); 
     Session.set('currentFile', fileId) 
    }, 
    "click .save-button": function (e, tmpl) { 
     var file = Session.get('currentFile'); 
     PhotosFS.storeFile(file, {$set: { 
      name: name, 
      photographer: photographer, 
      caption: caption, 
     }}); 
    } 
}); 

我不會接受我自己的答案,因爲我仍然希望有人找到一種方式與文件存儲在會話中工作上傳之前。