首页 > 解决方案 > 不确定现有项目是否正在使用其他数据格式的 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 文件?如果不是,这是什么类型的数据文件,所以我可以开始寻找更多相关的教程?任何帮助将不胜感激。

标签: javascriptreactjsblob

解决方案


“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 文件。


推荐阅读