使用需要标头并提供内容的 REST 请求下载文件

2024-03-30

我正在使用带有 REST API 的 AngularJs。我不知道 REST API。 我可以通过发送 REST 请求使用 API 存储数字对象。 我也可以通过 GET 请求获取它。 请求需要有一些特定的标头。

我的目标是为用户提供“下载并另存为”链接。 现在,我在点击事件上提出请求:

    this.file = function (file) {
        var url = config.domain + 'file/' + file;

        var methods = resource(url, null, { 
            'get': {
                method:'GET', 
                headers:{   'Authorization' : user.auth, 
                            'secret-key' : user.secretkey}
            }
            transformResponse : function(data, headersGetter){
                                    return {content:data}; //transform octet stream into text, angular returns an array containing 1 character per element.
                                },
        });
        return methods;
    };

在返回正文中我有文件内容(见下文)。我想下载它。这怎么可能 ?请注意,我无法将文件存储为 URL。

是否可以打开一个窗口,使用良好的标头进行其余调用并保存文件?

EDIT

我需要能够与 50Mo 文件良好配合的解决方案。

我的 PDF 文件内容示例:

%PDF-1.7
£´ÅÖçø
2 0 obj
[/ICCBased 3 0 R]
endobj
3 0 obj
<<
/Filter /FlateDecode 
/Length 2596 
/N 3 
>>
stream
xwTSÙϽ7½PÐkhRH
½H.*1   JÀ"6DTpDQ¦2(à£C±"Q±ëDÔqpId­ß¼yïÍß÷~k½ÏÝgï}ÖºüÂLX    ¡XáçÅg`ðlàp³³BøF|Ølø½º         ùû*Ó?Áÿ¹Y"1PçòøÙ\É8=W%·Oɶ4MÎ0JÎ"Y2Vsò,[|öe9ó2<ËsÎâeðäÜ'ã9¾`çø¹2¾&ctI@Æoä±|N6(Ü.æsSdl-c(2-        ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§&\SáÏÏMçÅÌ07#â1ØYárfÏüYym²";Ø8980m-m¾(Ô]ü÷v^îDøÃöW~
°¦eµÙúmi]ëP»ýÍ`/²¾u}qº|^RÄâ,g+«ÜÜ\Kk)/èïúC_|ÏR¾Ýïåaxó8t1C^7nfz¦DÄÈÎâpùæøþuü$¾/ED˦L         Lµ[ÈB@øøÃþ¤Ù¹ÚøÐX¥!@~(*     {d+Ðï}ÆGùÍÑûÏþ}W¸LþÈ$cGD2¸QÎìüZ4 E@ê@èÀ¶À¸àA(q`1àD µ ­`'¨u     46ptcà48.Ë`ÜR0)ð
Ì@ÈRt CȲXäCP%CBH@ë R¨ªê¡fè[è(tº
C· Qhúz#0   ¦ÁZ°l³`O8ÁÉð28.·Àp|îOÃàX
?§:¢0ÂFBx$  !«¤i@Ú¤¹H§È[EE1PLÊ⢡V¡6£ªQP¨>ÔUÔ(j
õMFk¢ÍÑÎèt,:.FW Ðè³èô8ú¡c1L&³³³Ó9Æa¦±X¬:Öë
År°bl1¶
{{{;}#âtp¶8_\<N+ÄU
[.....]

我认为你可以使用 blob 之类的东西

var content=...the content of your request;
var mypdf = new Blob(content, {type : 'application/pdf'});

并检查另一个问题中“panzi”的答案使用 HTML5/Javascript 生成并保存文件 https://stackoverflow.com/questions/2897619/using-html5-javascript-to-generate-and-save-a-file

(数组中每个元素一个字符看起来相当不错的二进制。可能您不需要转换它。https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用需要标头并提供内容的 REST 请求下载文件 的相关文章

随机推荐

  • Spring STS 不适用于 Gradle

    我已经下载了Spring STS 我创建了一个项目 新的 spring 启动项目 并选择了 gradle buildship 它说我没有 需要从市场上购买 我去了市场 得到了它 重新启动 创建了一个示例 gradle java 项目并编译它
  • MultipartEntityBuilder 从 Android httpurlconnection 发送数据

    我正在尝试更改 HTTPClient 已弃用的代码 但我在 setEntity 上收到错误 因为它已损坏 而且我不知道如何通过新的 httpConnectionUrl 来 paas MultipartEntityBuilder 我旧的已弃用
  • Postgres 使用数组格式化字符串

    我正在寻找一种使用数组格式化字符串的简单方法 如下所示 select format using array Hello s and s ARRAY Jane Joe format using array Hello Jane and Joe
  • 在react-virtualized 中添加padding-top

    我有一个
  • 如何检测父元素中的任何子元素是否具有某个类?

    我试图检测父 图库 div 中的任何子div 是否具有 show 类 div div class show div div div div div div if TEST CONDITION alert sub element with t
  • 从 OpenID 提供商检索电子邮件地址的通用参数

    在我的网站中 我使用基于 OpenID 的身份验证 我正在向 OpenID 提供商请求 电子邮件地址 问题是每个提供商在身份验证后在 GET 响应中以自己的参数发送电子邮件地址 我列出了我所看到的三个 堆栈交换 openid alias3
  • 在 EMR 4.0 中启动 Spark 时出错

    我创建了一个EMR 4 0AWS 中的实例以及所有可用的应用程序 包括Spark 我通过 AWS 控制台手动完成此操作 我启动了集群并在启动时通过 SSH 连接到主节点 我跑到那里pyspark 当我收到以下错误时pyspark尝试创造Sp
  • JUnit5 测试未从“application-test.yml”加载属性

    我正在尝试为我的服务类编写单元测试 该服务类依赖于配置属性类 MyService java Service RequiredArgsConstructor public class MyService private final MyCon
  • jmeter-如何获取当前日期和时间(以秒为单位)

    我想计算当前时间 以秒为单位 并将其用作我的 jmeter 测试计划中的参数 默认情况下 时间以毫秒为单位 有人可以帮我吗 您可以使用 time 函数 http jmeter apache org usermanual functions
  • SQL 查询来计算不同值的数量

    x y A P A P B P B Q 你好 我需要一个查询来返回 x 的所有唯一值 有多少个不同的 y 因此 对于上述数据 它将返回 x count A 1 B 2 Thanks 使用 GROUP BY 和COUNT DISTINCT h
  • 使用 ndk-gdb 调试 Android 本机应用程序

    我正在尝试在 eclipse 中使用 ndk gdb 调试具有一些本机 c 代码的 android 应用程序 似乎 gdb 服务器从命令行成功启动并正在接受命令 但在 Eclipse 中却显示了这个错误 从设备获取文件时出错 com and
  • UCWA 或 UCMA API 是否支持 Skype for Business Online?

    我们正在尝试找出最新的UCWA https msdn microsoft com en us library office dn324971 v office 16 aspx or UCMA https msdn microsoft com
  • Elastic beanstalk需要python 3.5

    我最近使用最新的稳定版本的 python 3 5 创建了一个新的 python 程序 不幸的是 AWS EB 不提供 3 5 基础镜像 我一直在尝试配置 ebextensions获取图像来升级 python 发行版 这是第一个操作 我还没有
  • 插入 id(自动生成,仅列)

    如果我想在表中插入一行 而该表只包含一个具有自动生成 ID 的列 那么我的 SQL 语句 MS SQL 应该是什么样子 以下两个查询不起作用 INSERT INTO MyTable MyTableId VALUES Null or simp
  • 你能解释一下这个查询的逻辑吗

    我有一个查询 查找薪水第四高的老师的姓名 我不明白这部分 SELECT COUNT DISTINCT T2 salary FROM teacher as T2 WHERE T2 salary gt T1 salary 3 from SELE
  • PHP文件夹权限问题

    我正在尝试使用 PHP 创建一个文件夹 然后在其中创建另一个文件夹 如果这是我的目录结构 home site owner user1 现在 我使用创建文件夹 mkdir home site newdir 0777 user apache 目
  • Tkinter 标签文本在特定循环中重叠

    我正在使用 Python 和 Tkinter 开发一个 简单 搜索界面 这是我得到的一些示例代码 usr bin env python from tkinter import import os import csv import sys
  • 有没有办法捕获列表理解中的失误?

    基于简单的列表理解 yay i for i in a if a i nay i for i in a if not a i 我想知道是否有一种方法可以同时分配yay and nay一次值 即条件上的命中和未命中 看起来像这样的东西 yay
  • 了解 REST API - 什么是 Context 和 @Context?

    我最近学习了 Restful Web 服务教程 但无法理解什么是context是 有人可以解释一下它是什么以及什么吗 Context does JAX RS 提供 Context注解注入与 HTTP 请求上下文相关的 12 个对象实例 它们
  • 使用需要标头并提供内容的 REST 请求下载文件

    我正在使用带有 REST API 的 AngularJs 我不知道 REST API 我可以通过发送 REST 请求使用 API 存储数字对象 我也可以通过 GET 请求获取它 请求需要有一些特定的标头 我的目标是为用户提供 下载并另存为