Javascript 您能将原始二进制数据存储在单个HTML文件中吗?

Javascript 您能将原始二进制数据存储在单个HTML文件中吗?,javascript,html,Javascript,Html,我正在尝试以单个.html文件的形式创建一个。换句话说,一个.html文件中嵌入了另一个文件(任何类型) 下面是一个非常简单的.html文件示例,它正好可以做到这一点。它有一个链接,您可以单击该链接从源代码中硬编码的base 64编码字符串生成并下载.png文件。这可以很容易地扩展到处理任何类型的文件 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>

我正在尝试以单个.html文件的形式创建一个。换句话说,一个.html文件中嵌入了另一个文件(任何类型)

下面是一个非常简单的.html文件示例,它正好可以做到这一点。它有一个链接,您可以单击该链接从源代码中硬编码的base 64编码字符串生成并下载.png文件。这可以很容易地扩展到处理任何类型的文件

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>Self-Extracting Archive</title>
</head>

<body>
    <a href="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="
        download>Save File</a>
</body>

</html>

自解压存档
问题是base 64的效率不是很高。是否可以将文件编码为普通二进制文件?我知道是否有可能,它可能会被黑客攻击。这很好,只要它能与所有主流浏览器兼容


我想类似的事情可能会奏效。如果它可用(但不可用),您可以将二进制文件附加到.html文件的末尾,然后以某种方式说服浏览器不要解析到文件的该部分。

注意,这不是标准的和过时的。这项任务可能会很有趣。我假设您正在尝试创建一个可供下载的文件,而不是实际执行的文件,对吗?因为你不能做后者(谢天谢地)。如果是前一个问题,这个问题是重复的。@HereticMonkey不,我不需要执行该文件,事实上该文件可以是任何文件类型(可执行或不可执行)。另外,据我所知,这不是该问题的重复,因为该问题只涉及base-64,它有33%的开销,而我感兴趣的是是否有可能以原始二进制存储数据,开销为0%。使用
Int8Array
Blob
。它还使用,而不是创建一个base64编码的数据URI——它在浏览器的内部Blob存储中创建一个指向Blob的URL;可能浏览器使用的存储方法比Base 64更高效。我不确定我是否正确地解释了我自己。我知道
UInt8Array
s和
Blob
s有效地存储数据,但是它们只能存在于RAM中。我对在HTML文件中高效地存储数据感兴趣。然后,HTML文件将分发给用户,用户可以使用HTML文件从存储在HTML文件中的数据生成另一个文件。生成的文件应仅略小于HTML文件(如果使用Base64编码,则不会比HTML文件小33%)。