使用HTTP“授权”标头集下载文件

时间:2013-03-08 16:51:52

标签: jquery ruby-on-rails rest download

我在RESTful API(由Rails制作)中提供文件上传到资源。当GET /resource/123/attachment将具有相应MIME类型的文件发送到浏览器时。 (可以是任何东西......图像,PDF,文本文件,无论如何)

如果有任何兴趣,可以这样做:

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

但由于上传的文件是基于用户和保密的,因此您需要使用令牌设置Authorization HTTP标头。

所以我考虑使用jQuery.get以便我可以设置HTTP标头。但是我如何处理来自服务器的响应?它应该像你点击一个普通链接一样(只是在请求之前设置了HTTP标头)

1 个答案:

答案 0 :(得分:0)

如果您可以控制服务器输出并且图像不是太大,您可以对图像进行base64并执行以下操作:

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

另一种选择是您可以使用备用身份验证进行编写,以允许您在查询字符串中添加一些内容,例如< img src =“/ resource / 123 / attachment?auth = xxxxx”>。例如,您可以查看oAuth或其他内容来签署请求。