Source file download in new Utils function

Adds a function for downloading a file from a remote URL in the Utils
class and uses it to revise one similar usage in FileBrowser.js

Signed-off-by: Daniel Tschlatscher <d.tschlatscher@proxmox.com>
Tested-by: Stefan Sterz <s.sterz@proxmox.com>
Reviewed-by: Stefan Sterz <s.sterz@proxmox.com>
This commit is contained in:
Daniel Tschlatscher 2023-01-04 13:56:34 +01:00 committed by Thomas Lamprecht
parent a95dbf6dea
commit 8189ce639c
2 changed files with 18 additions and 6 deletions

View File

@ -1360,6 +1360,19 @@ utilities: {
}
return `<span class="${cls}" style="${style}">${string}</span>`;
},
// Setting filename here when downloading from a remote url sometimes fails in chromium browsers
// because of a bug when using attribute download in conjunction with a self signed certificate.
// For more info see https://bugs.chromium.org/p/chromium/issues/detail?id=993362
downloadAsFile: function(source, fileName) {
let hiddenElement = document.createElement('a');
hiddenElement.href = source;
hiddenElement.target = '_blank';
if (fileName) {
hiddenElement.download = fileName;
}
hiddenElement.click();
},
},
singleton: true,

View File

@ -101,18 +101,17 @@ Ext.define("Proxmox.window.FileBrowser", {
let params = { ...view.extraParams };
params.filepath = data.filepath;
let atag = document.createElement('a');
atag.download = view.downloadPrefix + data.text;
let filename = view.downloadPrefix + data.text;
if (data.type === 'd') {
if (tar) {
params.tar = 1;
atag.download += ".tar.zst";
filename += ".tar.zst";
} else {
atag.download += ".zip";
filename += ".zip";
}
}
atag.href = me.buildUrl(view.downloadURL, params);
atag.click();
Proxmox.Utils.downloadAsFile(me.buildUrl(view.downloadURL, params), filename);
},
fileChanged: function() {