angular - iframe src 中的 blob 对象
问题描述
我正在尝试做一些看起来很简单的事情:我正在尝试在 iframe 中显示一个 window.URL.createObjectURL (* .pdf 文件 - Blob)。我试图通过将 iframe src 属性绑定到 window.URL.createObjectURL 函数的输出来做到这一点。请参阅我的代码:组件 Html:
<iframe [src]="safeResourceUrl" class="iframe"></iframe>
在组件中绑定属性:
safeResourceUrl : SafeResourceUrl;
this.safeResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url);
网址看起来像这样(示例):
“斑点:http://localhost:4200/84999abe-5a02-48e0-bf61-f693eb5e0f6b ”
这是它的内容(没错,这些是保存为 PDF 的 HTML 标记,但任何其他内容也应该没问题):
<html>
<body>
<label style="color:red;"> test file (HTML) </label>
</body>
</html>
文件路径由从 webApi 获取请求生成的 Blob 生成。请求配置为:
responseType: 'blob'
并且 blob 类型是
type: 'application/octet-stream'
我在这里想念什么?下载的文件内容正确,但 iframe 内容(在开发人员工具中包含空 HTML 标记):
<html><head></head><body></body></html>
请支持
解决方案
经过几次测试后弄清楚了:我将 blob 类型设置为“application/pdf”,而不是用于下载的“application/octet-stream”。
const blob = new Blob([res.body], { type: obj.action == FileAction.save ? 'application/octet-stream' : 'application/pdf' }); // preview in a PDF format
推荐阅读
- ios - 在单例中更新 Alamofire AuthenticationInterceptor 的凭据(Alamofire 5 / Swift 5)
- c++ - 没有运算符“=”匹配这些操作数错误
- http - 可以取消选中采样器中的“保持活动状态”复选框吗?我收到“443 无法响应”错误
- python - 如果列名匹配/不匹配同一行中字符串中的字符,如何用 1/0 填充熊猫数据框列元素
- javascript - 如何使用 span 元素(图标)进行模糊处理?
- javascript - Next.js ISR(增量静态再生),如何在间隔/ISR时间开始之前手动或动态重建或更新特定页面?
- windows - 为 Firebase 模拟器打包 JSON 脚本
- javascript - 在 Javascript 中初始化和创建数组
- html - 从重叠的两个元素填充
- java - 如何通过 curl 使用斯坦福 NLP POS 标记器