file - 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);
}
解决方案
我能够通过使用解决这个问题
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"以便可以保存文件并且不会在当前站点的位置打开。
推荐阅读
- java - 在 .classpath 文件 eclipse 中设置 jar 文件的相对路径
- c++ - Box2D OpenGL 错误
- vue.js - 如何在模块中使用 nuxt 挂钩?
- npm - 安装一个“匹配”项目依赖项的依赖项
- javascript - 与 Office UI Fabric 反应 - InputChildren 未触发 onSubmit/onClick
- c++ - 在 C++ 中创建类型向量
- c# - 没有从 api 控制器引用业务逻辑?
- ecmascript-6 - 从 ES2018 async/await 到 ES2015 Promises 。... 超时
- cmake - CTest:如果“预检查”测试失败,如何跳过其他测试?
- webdriverwait - 为什么我的 WebDriverWaits 设置为 20 秒后 1 秒后出错?