当前位置: 首页 > 知识库问答 >
问题:

来自REST API的PDF未加载到Angular 2应用程序中

仲孙默
2023-03-14

为了让Angular 2 / 4应用程序成功地将一个PDF文件从RESTful http调用加载到web浏览器中,需要对下面的内容做哪些具体的更改?

请注意,有问题的应用程序扩展了超文本传输协议以向超文本传输协议请求添加JWT。根据此链接,以这种方式扩展超文本传输协议将导致与覆盖Request estOptions相关的问题。

当用户在web浏览器中键入< code > http://192 . 168 . 1 . 5:4000/white paper . PDF 时,后端API会成功提供所需的PDF。然而,Angular应用程序需要从API编程中吸收白皮书,然后在浏览器中提供pdf,其中包含Angular应用程序的一部分url。

Angular应用程序的代码如下:

我的服务

getAll() {
    console.log('Inside getAll!');
    return this.http.get('http://192.168.1.5:4000/whitepaper.pdf').map((response: Response) => response.blob())
            .catch((err:Response) => {
        console.log('Error block!');
        return Observable.throw('error!');
     });;
}  

my.component.ts

getPDF() {
    console.log('Hey there, Jackass!');
    console.log(JSON.parse(localStorage.getItem('currentUser')).token);
    let myblob = new Blob([this.pDFService.getAll()], { type: 'application/pdf' });
    console.log(myblob.type);
    console.log(myblob.size);
    var fileURL = URL.createObjectURL(myblob);
    window.open(fileURL); // if you want to open it in new tab
}  

myblob。键入打印为application/pdf,以及myblob。尺寸打印为15

后端API在Node.js/Express.

Angular 代码示例来自此答案,但在当前情况下不起作用。

自定义http的代码。ts位于此链接。该链接提到,在当前应用程序中覆盖http时,在当前情况下会出现问题。

共有1个答案

佘飞鸣
2023-03-14

您的< code>getAll()将向您返回一个< code >可观察值。因此:

    this.pDFService.getAll().subscribe( data => {
        let myblob = new Blob([data], { type: 'application/pdf' });
        var fileURL = URL.createObjectURL(myblob);
        window.open(fileURL); // if you want to open it in new tab
    })
 类似资料:
  • 我试图为我的应用程序实现SSE。我的客户端是角4应用程序,我使用EventSourcePoly填充(使其也适用于IE)。我的服务器端是Spring,我使用Spring SseEmitter进行相同的操作。 我根据客户端的特定用户事件打开一个新的SSE连接。我可以看到请求到达服务器,SSE事件被记录,我可以看到响应也被创建。我想以json的形式发送响应。我基本上是在尝试发送数据更新,并且正在使用更新

  • 我的React客户端的Dockerfile: 我的Express后端的Dockerfile: 我的码头工人。项目根目录中的yml文件: 我的服务器。我的后端文件夹下的js文件: 当我跑的时候: 我得到以下输出在我的终端: 我的后端以代码0退出,我无法加载我的应用程序。我的后端正在运行。 我做错了什么,如何让我的React-Express Node应用程序与Docker Comment一起运行?

  • 问题内容: 为了加快JVM的启动时间,Sun开发人员认为在JVM的安装过程中预编译平台的标准运行时类是一个好主意。这些预编译的类可以在以下位置找到: $ JAVA_HOME \ jre \ bin \ client \ classes.jsa 我公司目前正在开发一个带有独立JRE的Java独立应用程序,因此,通过向此jsa文件中添加我们自己的应用程序类来加快我们的应用程序启动时间也是一个不错的选择

  • 按照这个指南,我将一个Android应用程序连接到了Google Firebase云消息服务(FCM ), 我按照这个答案建立了FCM之间的连接 我可以成功接收从FCM控制台发送的消息,但不能从AWS SNS控制台接收。 AWS上记录的消息传递状态显示我发送的每一条消息都成功,而我的设备上没有显示任何通知。 有没有办法检查发生了什么?

  • 在我的项目中,我想使用特定于环境的属性文件。例如,如果我在开发中运行它,它应该使用应用程序。dev.properties,对于生产,它应该使用应用程序。产品属性等等。 我有下面两个文件在我的资源文件夹。 application.properties(用于生产) application.dev.properties(用于开发) 我有一个属性像下面的每个文件。 为了刺激 给德夫 我有一门课,如下所示

  • 问题内容: 我想我在这里遇到了一些classpath忧郁症。我一直在关注这些例子。我看了教程。但是似乎没有什么对我有用。 假设我在以下URI中具有JPEG: 假设我有一个带有的Swing应用,并且我想将此JPEG添加到JPanel中(位置/布局无关紧要)。 那么如何做到这一点? 我没有收到任何错误或异常,只是没有看到JPEG负载。我要使用的代码是这样的: 请告知…我从今天中午开始及其午夜一直在处理