From 2f01cb8cf3884028246f7c47c0b83ceba965466c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Steinr=C3=BCcken?= Date: Thu, 8 Oct 2020 17:00:27 +0200 Subject: [PATCH] Allow file-uploads without cors beeing set on the bucket --- widgets/file.py | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/widgets/file.py b/widgets/file.py index 705c3b7b..1586b3dc 100644 --- a/widgets/file.py +++ b/widgets/file.py @@ -176,7 +176,6 @@ def onUploadUrlAvailable(self, req): Internal callback - the actual upload url (retrieved by calling /file/getUploadURL) is known. """ if conf["core.version"][0] == 3: - params = NetworkService.decode(req)["values"] formData = html5.jseval("new FormData();") @@ -197,11 +196,7 @@ def onUploadUrlAvailable(self, req): formData.append(key, value) formData.append("file", req.file) - self.xhr = html5.jseval("new XMLHttpRequest()") - self.xhr.open("POST", params["url"]) - self.xhr.onload = self.onLoad - self.xhr.upload.onprogress = self.onProgress - self.xhr.send(formData) + html5.window.fetch(params["url"], {"method": "POST", "body": formData, "mode": "no-cors"}).then(self.onLoad) else: r = NetworkService.request("", "/vi/skey", successHandler=self.onSkeyAvailable) @@ -237,20 +232,17 @@ def onLoad(self, *args, **kwargs): Internal callback - The state of our upload changed. """ if conf["core.version"][0] == 3: - if self.xhr.status in [200, 204]: - NetworkService.request( - "file", "add", { - "key": self.targetKey, - "node": self.node, - "skelType": "leaf" - }, - successHandler=self.onUploadAdded, - secure=True + NetworkService.request( + "file", "add", { + "key": self.targetKey, + "node": self.node, + "skelType": "leaf" + }, + successHandler=self.onUploadAdded, + failureHandler=self.onFailed, + secure=True ) - else: - DeferredCall(self.onFailed, self.xhr.status, _delay=1000) else: - if self.xhr.status == 200: self.responseValue = json.loads(self.xhr.responseText) DeferredCall(self.onSuccess, _delay=1000)