【问题标题】:Word document Base64 encoded string downloads as zip fileWord 文档 Base64 编码字符串下载为 zip 文件
【发布时间】:2021-02-13 00:36:01
【问题描述】:

我有一个用下面的 php 函数转换的 base64 编码字符串。

public function convert_image_to_base64($file_path){
    $mime = get_mime_by_extension($file_path);
    $data = file_get_contents($file_path);
        
    return 'data:'. $mime . ';base64,' . base64_encode($data);      
}

我想用下面的html在浏览器中下载文件

<a href="<?= $base64_file ?>" target="blank">Download</a>

当我点击时,该链接会下载一个 zip 文件

这是生成的 base64 字符串的开始

数据:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,UEsDBBQABgAIAAAAI

我想下载准确的 .docx 或 .doc 文件上传

我在 stackoverflow 和其他论坛上进行了搜索,但都没有解决这个确切的问题。我也不想在提交 html 之前解码文件。

【问题讨论】:

  • 将完整文件放在页面内的 base64 url​​ 中是个坏主意
  • @DanielA.White 我选择将文件放在 html 中是出于安全原因。这将是机密文件。
  • 这不是一个足够好的理由 - 仍然有办法通过身份验证和授权来保护它

标签: php html base64


【解决方案1】:

所以问题是下载文件的文件扩展名没有添加到下载的base64文件中。我通过使用此链接下面的 html 强制下载文件的名称解决了这个问题。参考here

&lt;a href="&lt;?= $base64_file ?&gt;" download="file.docx" target="blank"&gt;Download&lt;/a&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-21
    • 2021-09-22
    • 1970-01-01
    • 2021-04-24
    • 2021-01-23
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    相关资源
    最近更新 更多