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 具有相同来源(协议、子域、域和端口需要相同)时有效。
例外情况是 blob
和 data
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 问题。基本上你的图像的主机决定图像是否可以嵌入和下载到其他页面。
我目前正在尝试从我的 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 具有相同来源(协议、子域、域和端口需要相同)时有效。
例外情况是 blob
和 data
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 问题。基本上你的图像的主机决定图像是否可以嵌入和下载到其他页面。