jquery - 下载带有 HTTP "Authorization" header 集的文件

标签 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)    

但由于上传的文件是基于用户的且保密,因此您需要使用 token 设置Authorization HTTP header 。

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

最佳答案

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

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

另一个选项是您可以编写备用身份验证,以允许您在查询字符串中添加一些内容,例如 。例如,您可以查看 oAuth 或其他东西来签署请求。

关于jquery - 下载带有 HTTP "Authorization" header 集的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15299196/

相关文章:

ruby-on-rails - ActiveRecord - 如果没有 child 离开,则销毁 parent

java - REST:处理 GET 请求的 400 错误

jquery - 如何在 Symfony2 中重写原型(prototype)渲染

javascript - json 选择一个名为 "item"的项目

javascript - Stripe支付网关在rails上发布ruby(TypeError : window.多媒体(...)为空)

ruby-on-rails - 禁止在 Ruby on Rails 中记录某些参数

java - 在休息服务中收到多部分请求时会出现问题

java - 在 Spring Boot 中从生成 PDF 内容类型内容的外部 Rest API 中提取响应字节的正确方法是什么?

jquery - 为什么jquery插件中的变量中存在对函数的调用

c# - 如何对 URL 进行 BASE64 编码?