Как вставить изображение в CollectionFS?

Я пытаюсь создать коллекцию изображений, используя CollectionFS в метеоре. Я использовал следующий код из https://github.com/CollectionFS/Meteor-CollectionFS/wiki/Insert-One-File-From-a-Remote-URL

        var url='data/2.jpg';
        var newFile = new FS.File();
        newFile.attachData(url, function (error) {
            if (error) throw error;
            newFile.name("testImage.jpg");
            Images.insert(newFile, function (error, fileObj) {});
        });        

Приведенный выше код записан в функции запуска в файле 'js/server.js', а изображение, на которое он ссылается, является 'js/data/2.jpg'.

Но это не похоже на работу и выдает эту ошибку:

Error: ENOENT, stat 'C:\Users\[username]\WebstormProjects\test\.meteor\local\build\programs\server\data\2.jpg'

1 ответ

Решение

Ошибка ENOENT это аббревиатура от "ErrorNO ENT ry". Вы получаете эту ошибку, потому что файл 2.jpgнедоступен или не существует в каталогеC:\Users\[username]\WebstormProjects\test\.meteor\local\build\programs\server\data\,

Если вы хотите вставить файл с удаленного URL-адреса, вам нужно указать доступный URL-адрес, например:

Images = new FS.Collection("images", {
    stores: [new FS.Store.FileSystem("images", {path: "~/uploads"})]
});

if (Meteor.isServer) {
    Meteor.startup(function () {
        var url = 'http://www.panderson.me/images/lena.jpg';
        var newFile = new FS.File();
        newFile.attachData(url, function (error) {
            if (error) throw error;
            newFile.name("lena.jpg");
            Images.insert(newFile, function (error, fileObj) {
                console.log(error);
                console.log(fileObj);
            });
        });
    });
}

Я предполагаю, что вы не хотите вставлять файл с удаленного URL. Если это так, поместите ваш файл вprivateкаталог и изменить переменнуюurlчтобы: "assets/app/lena.jpg",

Images = new FS.Collection("images", {
    stores: [new FS.Store.FileSystem("images", {path: "~/uploads"})]
});

if (Meteor.isServer) {
    Meteor.startup(function () {
        var url = "assets/app/lena.jpg";
        var newFile = new FS.File();
        newFile.attachData(url, function (error) {
            if (error) throw error;
            newFile.name("lena.jpg");
            Images.insert(newFile, function (error, fileObj) {
                console.log(error);
                console.log(fileObj);
            });
        });
    });
}

Другие вопросы по тегам