Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从获取的二进制数据(二进制数据是从REST接收到的对象的元素之一)以前端角度显示pdf?

如何从获取的二进制数据(二进制数据是从REST接收到的对象的元素之一)以前端角度显示pdf?
EN

Stack Overflow用户
提问于 2019-01-28 06:17:09
回答 1查看 2.8K关注 0票数 1

在MongoDB‘证书’集合中有'_id,studentID,file‘字段。我只需输入每一个文档,其中'_id‘和'studentID’的数据类型是字符串,而文件数据类型是二进制的(这个二进制数据类型由MongoDB在插入每个用户pdf文件时自动生成)。

从获取的数据,我可以显示成角(如StudentID,SchoolName),但只有我不能显示从获取的二进制数据到角

在节点服务器中:(app.js) //给定核心代码,以避免过长时间的读取

//用于将数据插入到MongoDB中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
**var fs = require('fs');  
var pdfBinary = fs.readFileSync("./TestingPurpose.pdf"); 
var pdf = new mongodb.Binary(pdfBinary);**
db.collection('Test').insert({                    
                 dateTime: new Date(dateTime),
                 studentName: studentName,
                 Principal: principalName,
                 file: pdf }
  • 在MongoDB中成功导入数据之后,可以看到MongoDB中的数据如下: { "_id“:"C1135","dateTime”:ISODate("2019-01-23T11:45:52.254+01:00"),"studentID“:"stu123","schoolName”:"XXX小学“,"file”:BinData(0,“JVBERi0xLjcNCiW1tbW1DQoxIDAgb2Jq.多101410字节- application/pdf") }

certificate.model.ts:文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class Certificate {
  _id: string;
  dateTime: string;
  studentID: string;
  schoolName: string;
  file: any;
}

然后在前端角使用(user.service.ts)接收来自节点的所有信息(app.js)::

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { Certificate } from '../model/certificate.model';
cert: Certificate[];
  // receiving all students info
getCertificates() {
    return this.http.get('http://localhost:5600/aziz/displayAllCertificates');
  }
// to get always get an instant update I use refreshGetCertificates()
  refreshGetCertificates() {
    this.chkSubscrip = this.getCertificates().subscribe((res) => {
      this.cert= res as Certificate[];
    });
  }

在证书组件中:(certificate.component.ts):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class CertificatesComponent implements OnInit, OnDestroy {
      myPDF: any;
      constructor(
         public userService: UserService,
         private dialog: MatDialog,
  ) { }
ngOnInit() {
    this.userService.refreshGetCertificates();
  }
 pdfView(receiveObj) {

    this.forPDF = !this.forPDF;
    const myUint8 = new Uint8Array(receiveObj);
    this.myPDF= myUint8;
  }
}

(certificate.component.html):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="rows">
  <ul class="settings_test headerclass text-center">
    <li style="float: left">ID</li>
    <li>Student-ID</li>
    <li>School</li>
    <li>PDF View</li>
  </ul>
</div>

<div *ngFor="let eachCerts of userService.cert">
  <div class="row">
    <div class="settings_test">
      <li style="width:10%">{{eachCerts._id}}</li>
      <li style="width:10%">{{eachCerts.studentID}}</li>
      <li style="width:10%">{{eachCerts.schoolName}}</li>
      <li style="width:10%"> <button (click) ="pdfView(eachCerts.file)">  View as PDF </button></li>
      <object *ngIf=forPDF data="{{myPDF}}" ></object>
    </div>
  </div>
</div>

每行将显示ID、StudentID、学校名称和按钮(“查看为pdf”),当单击按钮时,弹出窗口或新窗口将显示从获取的pdf二进制数据中获取的pdf文件。

EN

回答 1

Stack Overflow用户

发布于 2019-01-29 04:31:15

正如在评论中发布的那样,您可以使用this answer来解决您的问题,只需进行以下修改:

在开始时,您必须将数据转换为blob。就你而言,这将是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public getPDFFromFile(file /* place here the correct type of your class*/): Blob {   
    return new Blob([file.buffer])
}

那么你应该能够使用上面提到的答案。正如MongoDB文档所指出的,您可以通过buffer属性访问内部二进制数据,该属性的类型为Buffer

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54403860

复制
相关文章
JavaScript 生态圈和技术趋势,这一年发生了这些变化 ...
大家好,我是 ConardLi, 拖了这么久,JS 生态圈最权威的调查报告 state-of-js 终于是出来了 ...
ConardLi
2022/04/08
6390
JavaScript 生态圈和技术趋势,这一年发生了这些变化 ...
c# 判断文件是否发生了变化
监控d盘下的所有.txt文件的修改 { FileSystemWatcher watcher = new FileSystemWatcher(); try { watcher.Path = @"d:\Test"; } catch (ArgumentException e) { Console.Write
zls365
2020/08/19
9490
字段加密后长度变化
加密算法有哪些 非对称加密算法:RSA,DSA/DSS 对称加密算法:AES,RC4,3DES HASH算法:MD5,SHA1,SHA256 数据加密的长度变化 加密流出 字符串转换成 bytes -> padding -> base64 编码 将字符串转换成 byte 根据字符串所占长度不同,长度会扩充到不同倍数 ascii 码的字符,如数字字母等,每个字符只占一个字节,长度不扩充 正常情况下,汉字等 unicode 编码,一个字符占 3 个字节,长度扩充3倍 如果是 mysql 中的 utf
王小明_HIT
2021/07/05
2.3K0
Flutter 中键盘弹起时,Scaffold 发生了什么变化
最近刚好有网友咨询一个问题,那就顺便借着这个问题给大家深入介绍下 Flutter 中键盘弹起时,Scaffold 的内部发生了什么变化,让大家更好理解 Flutter 中的输入键盘和 Scaffold 的关系。
GSYTech
2021/03/02
2.2K0
Flutter 中键盘弹起时,Scaffold 发生了什么变化
MySQL从5.5升级到5.6,TIMESTAMP的变化
本文介绍了MySQL从5.5升级到5.6后,TIMESTAMP字段的变化。在MySQL5.5中,TIMESTAMP默认使用UTC时区,并且不支持NULL值。而在MySQL5.6中,TIMESTAMP支持了更多的默认值,并支持了NULL值。但是,在MySQL5.6中,TIMESTAMP的行为变得更为诡异,需要使用explicit_defaults_for_timestamp参数来控制。总的来说,升级到MySQL5.6后,需要更加小心地处理TIMESTAMP字段,以避免出现数据异常等问题。
高爽
2017/12/28
1.1K0
战“疫”期间,移动直播行业都发生了哪些变化?
国内疫情逐渐被控制,正往好的方向发展。在此之前,疫情对各行各业都产生了巨大影响。尤其是互联网相关行业,疫情以来,网民对移动互联网的依赖加大,根据Questmobile发布的数据来看,互联网的使用市场比日常增加21.5%。
云豹通讯员
2020/03/12
6000
战“疫”期间,移动直播行业都发生了哪些变化?
7月份,腾讯云云函数发生了这些变化
7月份,我们做了这些优化。 1. HTTP Service内测发布 HTTP Service支持通用框架的无缝迁移,已有代码直接迁移Serverless架构。它具备高性能、无运行时长限制的特性,让您保留原有的开发习惯。并集成域名,默认提供了三级子域名,省去域名注册和备案等复杂流程,自动配置解析,天然集成SSL证书。 同时,可以通过控制台或者CLI快速上传部署代码,支持Websocket,可以轻松搭建聊天室、小游戏等业务。可点击如下链接了解详情:https://cloud.tencent.com/docum
腾讯云serverless团队
2019/08/16
3.7K0
7月份,腾讯云云函数发生了这些变化
浏览器输入URL后发生了什么
在网络世界,你肯定记得住网站的名称,但是很难记住网站的 IP 地址,因而也需要一个地址簿,就是 DNS 服务器。DNS 服务器是高可用、高并发和分布式的,它是树状结构,如图:
前端迷
2020/02/19
4.3K0
浏览器输入URL后发生了什么
部署hexo后样式丢失问题
如果遇到hexo部署到gitee后样式丢失,并且控制台没有报错的话,可以修改hexo配置文件
阿超
2022/08/16
1.5K0
部署hexo后样式丢失问题
Linux 系统开机加电后发生了什么?
电脑启动后,CPU逻辑电路被设计为只能运行内存中的程序,没有能力直接运行存在于软盘或硬盘中的操作系统,如果想要运行,必须要加载到内存(RAM)中。
用户8826052
2022/03/02
2K0
linux系统开机加电后发生了什么?
电脑启动后,CPU逻辑电路被设计为只能运行内存中的程序,没有能力直接运行存在于软盘或硬盘中的操作系统,如果想要运行,必须要加载到内存(RAM)中。
用户7686797
2021/09/29
2.5K0
【报告推荐】2022年,消费趋势发生了哪些重大变化?
旷日持久的疫情,深刻改变了整个消费市场的全貌,更重要的是改变了消费者对于未来的“预期”。根据埃森哲研究报告,消费倾向持续走低,预防性储蓄持续增长,消费更加理性。对比2017年,曾经盛极一时的“月光族”概念悄然淡出历史舞台。 对企业来说,也告别了一度野蛮生长的年代,转而开始精细化运营。与经济发展初期大家追求仅仅盲目财富不同,如今的消费者更加成熟,开始更加关注家庭,健康以及事业。Work Life Balance重新回到了大众视线,也就是更关注“生活”本身。包括最近不少通过我们发布招聘信息的企业中,不少也开始把
iCDO互联网数据官
2022/06/09
4770
【报告推荐】2022年,消费趋势发生了哪些重大变化?
如何升级到 React 18发布候选版
上周 react 官网 发布了 react@rc 版本,该版本是候选版本(Release Candidate),这意味 API 已经基本稳定,跟最终版本不会有太大差别,官网也发布博客《如何升级到 react18 RC 版本》,鼓励大家尝试升级,所以我们可以在项目组中使用了!下面内容来自是官方文档的翻译。
狂奔滴小马
2022/03/30
2.4K0
如何升级到 React 18发布候选版
睡眠剥夺后皮层微结构的广泛变化
大脑皮层的微观结构受到昼夜节律和睡眠剥夺的影响,但这些影响的确切基础尚不清楚。t1加权和t2加权磁共振图像之间的比率(T1w/T2w比率)与髓磷脂水平和树突密度有关,这可能为研究睡眠剥夺大脑的皮质内微观结构提供新的见解。在这里,我们检测了41名健康青年(26名女性)在睡眠剥夺(n = 18)或正常睡眠-觉醒周期(n = 23)前后32小时的皮质内T1w/T2w比值。线性模型显示,在32小时后,四组患者的T1w/T2w比值变化有显著的组间差异,包括岛叶、扣带回和颞上皮质的双侧效应,包括涉及注意、听觉和疼痛处理的区域。在整组中,睡眠剥夺组T1w/T2w比值增加,而正常睡眠-觉醒组T1w/T2w比值降低。这些变化不能用扫描仪内头部运动来解释,在调整皮质厚度和水合作用后,簇间95%的影响仍然显著。与正常的睡眠-觉醒周期相比,32小时的睡眠剥夺使皮质内T1w/T2w比值增加。虽然本研究检测到的皮质内变化可以反映髓磷脂或树突密度的变化,或两者的变化,但需要组织学分析来明确具体的皮质过程。
悦影科技
2022/08/18
2750
hive sql(五)—— 按照时间轴顺序, 发生了状态变化的数据行
https://blog.csdn.net/luo981695830/article/details/111211773
大数据最后一公里
2021/08/05
1.1K0
超融合三年,用户对它的期待发生了哪些变化?
从2016年开始,著名研究机构Evaluator Group就在全球范围内针对企业级超融合基础设施(Hyper-Converged Infrastructure,简称“HCI”)的应用展开了调查,如今已是第三年。
用户6543014
2019/10/27
4600
自 Adam 出现以来,深度学习优化器发生了什么变化?
如果将 Adam 优化出现以来产生的关于优化过程的有趣想法按时间顺序排列的话,结果如下:
机器之心
2018/12/25
9560
自 Adam 出现以来,深度学习优化器发生了什么变化?
自2013到2019年大数据领域发生了什么变化
在网上看到这篇文章之后发现还挺有意思,文章也算比较简短,就试着联系了一下作者说我想把他翻译成中文,不做商业用途只是练习和技术布道。作者的回应也非常快,当晚就给我回复,所以就有了这篇翻译,如果翻译有不准确的地方还请大家指出。
黑光技术
2019/02/21
3.9K0
自2013到2019年大数据领域发生了什么变化
点击加载更多

相似问题

使用javascript的铯多边形回调

112

如何使用铯中的可用性间隔来定义多边形实体?

17

将HTML元素放在铯实体的位置上

12

铯中的解析实体

10

铯:基于位置数组动态地改变实体的位置。

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文