Мой файл может быть обслужен только в том случае, если я добавлю токен 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"