文件直接在href属性中编码为Base64编码的字符串以供下载

时间:2015-01-08 15:08:06

标签: html base64

如果我有一个文件,例如编码为Base64字符串的MS Word文档,有没有办法通过将字符串放在A标记的href属性中以及一些MIME信息使其可用作下载?

理想情况下,我想做点像......

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

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

我只需要知道这是否值得追求,或者我是否正在咆哮错误的树。感谢。

1 个答案:

答案 0 :(得分:0)

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

1)我使用.htaccess重写网址如下:

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

这样我的链接可以指向看似真实的文件而不是.php文件,因此/downloads/your_file.doc变为/file.php?filename=your_file.doc

2)在file.php内,我按如下方式设置标题:

$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对于找到有效的解决方案非常有用。