【问题标题】:JavaScript: save base64 string as fileJavaScript:将base64字符串保存为文件
【发布时间】:2013-06-04 11:33:55
【问题描述】:

我有一个 base64 字符串,文件类型。文件类型可以是图像、文本甚至 pdf。我需要显示download 链接,当用户点击它应该开始下载预期的文件。
简而言之,服务器将文件作为 base64 字符串发送给我,我需要将其保存为浏览器上的文件。如何将base64字符串保存为浏览器上的文件?如果解决方案也适用于 IE9,那将是最好的。

【问题讨论】:

    标签: javascript file base64


    【解决方案1】:

    您可以使用download.js

    download(base64String, filename, mimeType)
    

    【讨论】:

    • 话虽如此,这对我的帮助最大。 +1
    • 这会为我打开一个“文件另存为”对话框。不能自动保存图片吗?
    • @nclsvh,这部分取决于您的浏览器。它可以配置为随时询问您。
    【解决方案2】:

    改编自 https://gist.github.com/RichardBray/23decdec877c0e54e6ac2bfa4b0c512f,适用于 Firefox。

    function downloadBase64File(contentBase64, fileName) {
        const linkSource = `data:application/pdf;base64,${contentBase64}`;
        const downloadLink = document.createElement('a');
        document.body.appendChild(downloadLink);
    
        downloadLink.href = linkSource;
        downloadLink.target = '_self';
        downloadLink.download = fileName;
        downloadLink.click(); 
    }

    【讨论】:

    • 这里存在语法错误:缺少“function”关键字。
    【解决方案3】:

    你可以通过js来下载pdf。

    用途:

    document.location = 'data:application/pdf;base64,' + base64String

    【讨论】:

    • 我认为,在 SPA 或完整的 ajax 场景中,不打开另一个选项卡或不离开当前行为更合适。
    【解决方案4】:

    当浏览器请求资源时出现相应的响应标头时,您将获得所需的效果(网页显示链接,当用户单击时,会弹出另存为对话框):

    Content-Disposition:附件;文件名="你的文件名.extension"

    如果您从服务器获取文件作为嵌入在 html 中的 base64 字符串,也许您可​​以跳过嵌入并简单地在服务器上嵌入指向文件的直接链接,让服务器将其提供给用户.

    Related SO on Content-Disposition

    【讨论】:

      猜你喜欢
      • 2016-12-03
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 2020-09-25
      • 2012-07-10
      • 2017-09-10
      • 2021-09-22
      相关资源
      最近更新 更多