javascript - 不确定现有项目是否正在使用其他数据格式的 blob 文件
问题描述
我正在开发一个由不再与公司合作的同事创建的应用程序。我正在尝试打开我认为是 blob 文件格式的 PDF,但没有一个教程给我预期的结果。
我注意到在我认为是 blob 文件之前有一些数据,这让我想知道我是否正确理解了我正在使用的内容。整个 blob 太大,无法在此处发布,但它是这样开始的:
data:application/pdf;base64,JVBERi0xLjcNJeLjz9MNCjIxIDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDQyMTExNC9PIDIzL0UgMzc0MzIwL04gMi9UIDQyMDU3NC9IIFsgMjYxNiA0NDhdPj4NZW5kb2JqDSAgICAgICAgICAg
在我正在阅读的帖子和教程中,例如,他们使用类似于以下的代码:
var file = new Blob([response], {type: 'application/pdf'});
由于我的 blob 文件包含“application/pdf”部分作为字符串的一部分,我开始怀疑我是否误解了,这是另一种文件而不是 blob。我还看到了 blob 文件的其他示例,它们也不包括“data:application/pdf;base64”。
如果文件太大,我会在浏览器中打开文件时遇到问题。我在这篇文章中概述了我的问题,但还没有收到任何建议,所以我试图找到一种不同的方法来解决这个问题。结果并不像预期的那样,这让我怀疑我是否正在寻找正确的东西。
这是我尝试过的以及结果如何:
var file = new Blob([upload.split(',')[upload.split(',').length - 1]], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
我使用“[upload.split(',')[upload.split(',').length - 1]]”删除字符串的“data:application/pdf;base64”部分,认为这会离开我只有 blob 数据,但这总是无法打开,给我以下结果:
所以我的问题是:我是否在使用 blob 文件?如果不是,这是什么类型的数据文件,所以我可以开始寻找更多相关的教程?任何帮助将不胜感激。
解决方案
“Blob 文件”并不是一个真正的东西。您可以将术语“blob”视为“只是一些二进制数据”,或者如果您是数据库供应商,则称它们为“Binary Large OBject”。
您的data:application/pdf;base64,JVBERi0xLjcNJeLjz9MNCjIxIDAgb2JqDTw8L...
字符串是数据 URL;一种在 URL 字符串中表示任意二进制数据的方法。由于 URI 具有base64
标记,因此您知道数据被编码为Base64,您可以使用任何可以找到的 Base64 解码器(网上有很多)来解码数据。
您的(截断的)数据开始
%PDF-1.7
%
21 0 obj
<</Linearized 1/L 421114/O 23/E 374320/N 2/T 420574/H [ 2616 448]>>
endobj
所以它代表了一个有效的 PDF 文件。
推荐阅读
- bash - Bash脚本在动态变量上更改部分文件夹路径
- python - 尝试将 pandas 数据框导出为 excel 文件时出错
- javascript - 如何使用 NodeJS 和 Yahoo! 发出 POST 请求 梦幻体育API
- c++ - ',' 标记之前应为 ')' - SFML 创建 RectangleShape
- python - 使用 N 个工作人员执行多处理任务列表的最佳方法?
- algorithm - 水壶问题GCD解决方法解释
- javascript - Puppeteer 无法在特定的输入字段中写入
- java - 在 JMH 中的每个基准测试之后恢复 Java 列表状态
- react-native - ReactNative:使用 Axios 将图像文件上传到服务器不起作用
- c++ - macosx 上信号处理程序中的 rip 寄存器值