我正在构建一个 MS Teams 应用程序,它应该在选项卡中运行。如何让用户下载客户端生成的应用程序中的文件?在 Teams 外部运行的普通 Web 应用程序中,我可以使用 https://github.com/eligrey/FileSaver.js 中的 saveAs 函数,但它似乎无法在 Teams 选项卡中工作。
我还尝试使用 microsoftTeams.openFilePreview(...) 函数并将 objectUrl 设置为数据 Url,但它似乎也不起作用。
有什么建议吗?
您可以尝试使用下面的代码吗
var ifrm = document.createElement("iframe");
ifrm.setAttribute("src", "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf");
ifrm.style.width = "640px";
ifrm.style.height = "480px";
document.body.appendChild(ifrm);
return ifrm;
我已经实现并测试了上面的代码,它按预期工作。
我无法使用 iframe 获得使用数据 url 的解决方案,但此解决方案有效:
const link = document.createElement('a');
link.download = filename;
link.href = url;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
其中 url 是数据 url(例如 data:application/pdf;base64,JVBERi0xLjMKJbrfrOAKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQ...),filename 是要下载的文件的名称。
这是一个老问题,但我仍然面临着如何能够从移动设备上的 Microsoft Teams 应用程序下载/预览文件的难题。
在 iOS 上,我可以预览文件(不能下载),但在 Android 上,我立即收到以下错误: “出了点问题 - 目前移动设备不支持此操作”。
这是我尝试下载文件的方式:
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', fileName);
document.body.appendChild(link);
link.click();
(link.parentNode as Node).removeChild(link);
如果有人找到任何解决方案,或者您有任何指导/想法可以提供,我会接受:)
谢谢你。