2013-03-08 2 views
4

Я предоставляю загрузку файла на ресурс в моем RESTful API (с Rails). Когда вы GET /resource/123/attachment, файл с соответствующим типом MIME отправляется в браузер. (Может быть что угодно .. образ, PDF, текстовый файл, вообще)Загрузите файл с заголовком HTTP «Авторизация»

Если какой-либо интерес, это делается так:

send_file(contract.attachment.path, :filename => contract.attachment.original_filename)  

Но так как загруженные файлы пользователем на основе и конфиденциальность, вам необходимо установить HTTP-заголовок Authorization с помощью токена.

Так что я подумал об использовании jQuery.get, чтобы установить HTTP-заголовок. Но как мне обрабатывать ответ, поступающий с сервера? Он должен вести себя так же, как вы нажимали на обычную ссылку (только перед тем, как запросить ссылку, только HTTP-заголовок)

+0

Является ли решение на основе токена (вместо http-заголовка) приемлемым для вас? Я имею в виду GET/resource/123/attachement? Токен = 111222333444 – promanski

ответ

0

Если вы можете управлять выводом сервера, а изображения не слишком велики, вы можете создавать изображения64 и делать что-то вроде этого:

$.ajax({ 
    url : '/resource/123/attachment', 
    processData : false, 
}).done(function(data){ 
    $("#YOUR_IMG_ID").attr("src", "data:image/png;base64,"+data); 
}); 

Другой вариант заключается в том, что вы могли бы написать в альтернативной аутентификации, чтобы позволить вам положить что-то в строку запроса, как < IMG SRC = «/ ресурс/123/крепежного? AUTH = ххххх» >. Например, вы можете заглянуть в oAuth или что-то еще, чтобы подписать запрос.

Смежные вопросы