首页 > 解决方案 > Blazor EDGE 链接。单击()

问题描述

此示例https://blazorfiddle.com/s/o8g3elz1在 Edge 中不起作用:

function saveAsFile(filename, bytesBase64) {
    var link = document.createElement('a');
    link.download = filename;
    //link.href = "data:application/octet-stream;base64," + bytesBase64;
    link.href = "data:," + bytesBase64;
    document.body.appendChild(link); // Needed for Firefox
    link.click();
    document.body.removeChild(link);
}

标签: filedownloadblazor

解决方案


我能够通过使用解决这个问题

lnk.href = objectURL = url.createObjectURL(blob);
link.dispatchEvent(new MouseEvent('click'));

您应该阅读以下文章,它有助于实现下载功能:

然而,我的解决方案有点不同,因为我不想将 base64 数据从 Blazor 服务器端发送到客户端,我完全可以避免使用 js。我创建了提供文件的 Web API 控制器,并且只使用了一个简单的 a href。例子:

<a href="/api/GetPdf/1234" target="_blank">Download File</a>

关键是使用target="_blank"以便可以保存文件并且不会在当前站点的位置打开。


推荐阅读