文件直接在 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 对于找到有效的解决方案非常有用。
如果我有一个文件,例如编码为 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 对于找到有效的解决方案非常有用。