[pmg-devel] [PATCH widget-toolkit v2 6/7] Source file download call in central function
Daniel Tschlatscher
d.tschlatscher at proxmox.com
Wed Sep 7 10:56:32 CEST 2022
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 at proxmox.com>
---
src/Utils.js | 13 +++++++++++++
src/window/FileBrowser.js | 11 +++++------
2 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/src/Utils.js b/src/Utils.js
index 6a03057..bb68937 100644
--- a/src/Utils.js
+++ b/src/Utils.js
@@ -1272,6 +1272,19 @@ utilities: {
.map(val => val.charCodeAt(0)),
);
},
+
+ // 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,
diff --git a/src/window/FileBrowser.js b/src/window/FileBrowser.js
index a519d6b..4e4c639 100644
--- a/src/window/FileBrowser.js
+++ b/src/window/FileBrowser.js
@@ -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() {
--
2.30.2
More information about the pmg-devel
mailing list