文件直接在 href 属性中编码为 Base64 编码字符串进行下载

File encoded as Base64 encoded string directly in href attribute for download

如果我有一个文件,例如编码为 Base64 字符串的 MS Word 文档,是否可以通过将字符串与一些 MIME 信息一起放入 A 标签的 href 属性中来使其可供下载?

理想情况下,我想做类似...

<a href="data:Application/base64,UEsDBBQABgAIAAAAIQDfpNJsWgEAAC[...]"></a>

[...] 是字符串的其余部分,为了便于阅读而被截断。

我只需要知道这是否值得追求,或者我是否找错了树。谢谢。

我通过以下方法成功完成了我想做的事情:

1) 我用 .htaccess 重写了 url 如下:

RewriteRule ^downloads/(.*)$ file.php?filename= [L,NC]

这样我的 link 就可以指向看似真实的文件而不是 .php 文件,所以 /downloads/your_file.doc 变成 /file.php?filename=your_file.doc.

2) 在 file.php 中,我将 headers 设置如下:

$filename = $_GET['filename'];
header("Content-type: application/msword"); 
header("Content-Disposition: attachment; filename=$filename"); 
echo base64_decode($your_base64_data);

请注意 Content-type: application/msword 仅适用于 .doc 文件,您需要将其替换为相关文件的适当 mime 类型,甚至通过替换使其动态化如果愿意,可以使用变量。

我发现 this thread 对于找到有效的解决方案非常有用。