将一个文件附加到另一个文件的末尾

将一个文件附加到另一个文件的末尾

我从以下指南中了解到在 JPG 末尾添加 RAR 存档非常简单。我想知道的是仅有的JPG 文件可以在末尾处理额外的数据,以及我是否可以将任意二进制 blob 附加到 JPG 的末尾。我不关心附加到末尾的文件是否会被其程序识别,我只关心 JPG 在图像查看器中是否完全相同。

为了更详细地介绍我的用例,我试图在专注于移动设备的 Web 应用中实现备份机制。我需要它适用于 iOS,因此唯一可用的途径是使用存储在图像文件中的数据。这有点笨拙,但请理解它在这个用例中是有意义的。上面的链接显示,附加到 JPG 的 RAR 文件仍然可以打开,因为我认为 RAR 在给定文件中的偏移量不需要为零,并且存档应用程序将查找RAR 的标头。我想用 Javascript 编程,针对任意二进制 blob 实现类似的东西。

答案1

是否只有 JPG 文件可以在末尾处理额外的数据

任何声明其内容大小的文件格式都可以附加随机数据,并且仍能被符合规范的应用程序正确解析。JPG 文件由多个段组成,其中动态长度段在开头声明其长度。因此,任何附加在末尾的随机数据都应该可以工作,因为读取它们的应用程序甚至不应该访问这些附加的数据。PNG 也是如此(每个块在开头声明其长度)。不幸的是,这不适用于 MP3。

然而,这只适用于合规应用程序。某些应用程序可能会采取捷径来减少内存或加快读取速度,这可能会导致图像失真。由于自身/框架/设备的内存限制,应用程序本身可能无法加载大文件。

相关内容