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.tschlatsc...@proxmox.com>
---
No changes from v5 (was last included in v2)

 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 7255e3f..ef0c2b8 100644
--- a/src/Utils.js
+++ b/src/Utils.js
@@ -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,
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



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to