2015-04-29 2 views
0

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

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

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

EDIT: Я достиг некоторого прогресса. На основании ответов на аналогичный случай "how to display images downloaded using XMLHttpReques т, я видел, что вы можете кодировать в 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»

+0

Вы отлаживаете использование хром? Если нет, не так ли? Ошибки обычно более явны в хром-консоли. – SylvainB

+0

Я не был. Спасибо за ваш совет, это заставило меня понять, что я просто пропустил http-пакет ... :-) – Billybobbonnet

ответ

0

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

+0

Это действительно позор, что они не заставляют его работать одинаково во всех браузерах или хотя бы писать «ИСПОЛЬЗУЙТЕ ХРОМ В ДЕБЮГ «где-то громко на метеоритной CLI. – SylvainB