sapui5如何触发图片下载?

How to trigger image download in sapui5?

我目前正在尝试从我的 Sapui5 应用程序下载 PNG 文件。我尝试了几种方法,但所有方法都只在新选项卡或同一选项卡中显示图像。从未触发下载。

这些方法我都试过了:

    1) URLHelper.redirect
    2) window.open,
    3) window.location.assign,
    4) fetch(URL).then(res => res.blob()).then(blob => {
                            var file = window.URL.createObjectURL(blob);
                            window.location.assign(file);

    5) var link = document.createElement("a");
                        link.href = FullURL;
                        link.download = "QRCode.png";
                        link.target = "_self";
                        document.body.appendChild(link);
                        link.click();
                        document.body.removeChild(link)

    6) sap.ui.core.util.File.save 

<---- 这只会导致文件 returns 作为可能不支持文件格式的消息。

如何触发下载?

我对此很陌生,希望你们能帮助我。谢谢

解决方案 #5 仅在图像和 URL 具有相同来源(协议、子域、域和端口需要相同)时有效。

例外情况是 blobdata URL。因此,您可以将解决方案#5 与#4 结合使用。

我创建了一个 small working example

相关代码在这里:

const sURL = 'https://i.imgur.com/q6E7b9d.png';
fetch(sURL)
    .then((oResponse) => oResponse.blob())
    .then((oBlob) => {
        const sBlobURL = URL.createObjectURL(oBlob);
        const oLink = document.createElement('a');
        oLink.href = sBlobURL;
        oLink.download = sURL.split('/').pop();
        oLink.target = '_blank';
        document.body.appendChild(oLink);
        oLink.click();
        document.body.removeChild(oLink);
    });

如果这也不起作用,那么您可能遇到了 CORS 问题。基本上你的图像的主机决定图像是否可以嵌入和下载到其他页面。