Подавать файлы в img src с помощью HTTP.get

Мой файл может быть обслужен только в том случае, если я добавлю токен x-аутентификации в заголовок HTTP-запроса «GET» (и я не хочу использовать файл cookie). Прямым следствием этого является то, что я не могу вызвать файл, просто используя его URL-адрес в html, мне нужно получить его из вызова JavaScript, желательно асинхронного.

Поскольку мой клиент — Meteor, я хочу использовать метод HTTP.get. Я получаю ту часть, где я получаю свой файл с помощью http.get, но не ту, где я прикрепляю его, например, к атрибуту src изображения.

Как мне вернуть результат загрузки моего файла, если я хочу использовать его на своей странице? (например, прикрепите его к атрибуту src изображения). Должен ли я использовать специальный шаблон или это можно сделать с помощью помощника?

EDIT: я добился некоторого прогресса. Основываясь на ответах на аналогичный случай "как отображать изображения, загруженные с помощью XMLHttpRequest, Я видел, что вы можете кодировать в base64 текст содержимого ответа.

Итак, вот что я думаю: я использую помощник для возврата атрибута img src. Я знаю, что вызов http является асинхронным, когда я использую его на стороне клиента, поэтому по умолчанию я возвращаю значение заполнителя (см. последнюю строку)

вот мой код (помощник вызывается внутри атрибута img src):

    link : function(){

    HTTP.get ("http://localhost:3000" + Files.baseURL + "/" + this.md5,
    {
        headers:{
            "X-Auth-Token": Accounts._storedLoginToken()
        }
        },
        function (error, result) {
            if (error){
                console.log ("an error " + result.statusCode + " occured");
            }
            else
            {
                retval ="";
                        for (var i=0; i<=result.content.length-1; i++)
                        retval += String.fromCharCode(result.content.charCodeAt(i) & 0xff);
                return "data:"+this.contentType+";base64," + encode64(retval)
            }
        })
    return "http://localhost:3000/images/placeholder.png"
    },

Этот код не работает, он выдает ошибку в строке http.get. «Исключение в помощнике по шаблону: .link@http://localhost:3000/client/views/uploader/uploader.js?b82cf5a1d421ef6a5a1e4eabaf8327fd1a9f2d75:43:2"


person Billybobbonnet    schedule 29.04.2015    source источник
comment
Вы отлаживаете с помощью хрома? Если нет, то могли бы вы? Ошибки обычно более явны в консоли Chrome.   -  person SylvainB    schedule 29.04.2015
comment
Я не был. Спасибо за ваш совет, это заставило меня понять, что я просто пропустил пакет http... :-)   -  person Billybobbonnet    schedule 01.05.2015


Ответы (1)


Как посоветовал BraveKenny, для отладки я использовал Chrome вместо Firefox. Оказалось, что просто отсутствует пакет http.

person Billybobbonnet    schedule 01.05.2015
comment
Очень жаль, что они не заставляют его работать одинаково во всех браузерах или, по крайней мере, громко пишут USE CHROME TO DEBUG где-нибудь в интерфейсе командной строки метеора. - person SylvainB; 01.05.2015