From 8aded326e3b713ba68cbb7977653dee9815190d2 Mon Sep 17 00:00:00 2001 From: Andrii Fylypiuk Date: Mon, 9 Jun 2025 18:54:01 +0200 Subject: [PATCH 1/2] Added adapter function to support browsers except Safari --- web/eclipse/src/pages/upload/Upload.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/web/eclipse/src/pages/upload/Upload.tsx b/web/eclipse/src/pages/upload/Upload.tsx index ad6d688..376cfe7 100644 --- a/web/eclipse/src/pages/upload/Upload.tsx +++ b/web/eclipse/src/pages/upload/Upload.tsx @@ -11,6 +11,16 @@ import { RequestCollection } from "../../providers/Requests" const uploadRequest = RequestCollection.uploadFile +async function getFileBytes(file: File): Promise { + if (file.bytes) { + // Safari/WebKit + return await file.bytes(); + } else { + // Chrome/Firefox + return new Uint8Array(await file.arrayBuffer()); + } +} + export default function Upload() { const params = useParams() const { path } = { @@ -39,7 +49,7 @@ export default function Upload() { const file = fileInput.files[0] const uplFilename = (filename.trim() == "" ? file.name : filename).trim() - uploadRequest.uploadFile(path, uplFilename, await file.bytes()) + uploadRequest.uploadFile(path, uplFilename, await getFileBytes(file)) .then((resp) => { if (resp.data) { setIsLoading(false) From b5a56722d9cb0b9718f8dc0ca9d7d516618e099b Mon Sep 17 00:00:00 2001 From: Andrii Fylypiuk Date: Mon, 9 Jun 2025 18:59:25 +0200 Subject: [PATCH 2/2] Improved checking and wrapping Safari `file.bytes()` --- web/eclipse/src/pages/upload/Upload.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/eclipse/src/pages/upload/Upload.tsx b/web/eclipse/src/pages/upload/Upload.tsx index 376cfe7..06df25e 100644 --- a/web/eclipse/src/pages/upload/Upload.tsx +++ b/web/eclipse/src/pages/upload/Upload.tsx @@ -12,9 +12,9 @@ import { RequestCollection } from "../../providers/Requests" const uploadRequest = RequestCollection.uploadFile async function getFileBytes(file: File): Promise { - if (file.bytes) { + if (typeof file.bytes === "function") { // Safari/WebKit - return await file.bytes(); + return file.bytes(); } else { // Chrome/Firefox return new Uint8Array(await file.arrayBuffer());