Есть много пакетов, которые вы можете использовать для этого.Я рекомендую CollectionFS .
Вам нужно добавить эти 3 пакета, и все готово.
cfs: стандартные пакеты cfs: gridfs // хранилищепакет адаптеров.Вы можете изменить это, если хотите.cfs: filesystem
Начнем с вставки изображения.
1.Создайте ImageCollection.js в вашей папке lib
import { Mongo } from 'meteor/mongo';
export const BOOK = new Mongo.Collection('books');
var imageStore = new FS.Store.GridFS("images");
export const Images = new FS.Collection("images", {
stores: [imageStore]
});Images.deny({
insert: function(){
return false;
},
update: function(){
return false;
},
remove: function(){
return false;
},
download: function(){
return false;
}
});
Images.allow({
insert: function(){
return true;
},
update: function(){
return true;
},
remove: function(){
return true;
},
download: function(){
return true;
}
})
2.Импорт коллекции изображений на стороне клиента и сервера. Например,
import {Images} from '../lib/imageCollection';
3.Добавьте тип ввода «файл» в форме и в соответствии с вашим использованием.
4.Создайте событие изменения в .JS-файле этого шаблона.
'change #bookCover': function (event) {
event.preventDefault();
console.log("changed!")
var files = event.target.files;
for (var i = 0, ln = files.length; i < ln; i++) {
Images.insert(files[i], function (err, fileObj) {
// Inserted new doc with ID fileObj._id, and kicked off the data upload using HTTP
bookImgId=fileObj._id;
});
}
},
Проверка в вашей базе данных Будет вставлено изображение.
5.Для отображения изображения Добавьте этот HTML-код для просмотра изображения.
6.Добавьте этот код в свой js-файл, в котором вы отображаете изображение.
bookImage: function (id) {
// console.log(id);
var imageBook = Images.findOne({_id:id});
// console.log("img: "+imageBook);
var imageUrl = imageBook.url();
return imageUrl; // Where Images is an FS.Collection instance
}
Примечание. Убедитесь, что вы импортируете свою коллекцию книг в нужное место для отображения изображения.