我正在尝试以单个 .html 文件的形式创建一个自解压存档(而不是更传统的 .exe 文件)。换句话说,一个 .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>
Run Code Online (Sandbox Code Playgroud)
问题是 base 64 效率不高。是否可以将文件编码为纯二进制文件?我知道如果有可能的话,它可能会很hacky。没关系,只要它能够兼容所有主流浏览器即可。
我认为类似的东西File.getAsBinary()可能会起作用。如果它可用(但实际上不可用),您可以将二进制文件附加到 .html 文件的末尾,然后以某种方式说服浏览器不要解析文件的该部分。