diff --git a/src/lib/elements/forms/inputFile.svelte b/src/lib/elements/forms/inputFile.svelte index 76c3babcc..ccff0a7a0 100644 --- a/src/lib/elements/forms/inputFile.svelte +++ b/src/lib/elements/forms/inputFile.svelte @@ -37,6 +37,13 @@ } return true; } + + function isFileOverSize(file: File) { + if (maxSize && file.size > maxSize) { + return true; + } + return false; + } function dropHandler(ev: DragEvent) { ev.dataTransfer.dropEffect = 'move'; hovering = false; @@ -47,6 +54,10 @@ error = 'Invalid file extension'; return; } + if (isFileOverSize(ev.dataTransfer.items[i].getAsFile())) { + error = 'File size exceeds the limit'; + return; + } if (ev.dataTransfer.items[i].kind === 'file') { const dataTransfer = new DataTransfer(); dataTransfer.items.add(ev.dataTransfer.items[i].getAsFile()); @@ -86,12 +97,20 @@ const fileExtension = file.name.split('.').pop(); return isFileExtensionAllowed(fileExtension); }); + const isOverSize = maxSize + ? Array.from(target.files).some((file) => isFileOverSize(file)) + : false; if (!isValidFiles) { error = 'Invalid file extension'; target.value = ''; return; } + if (isOverSize) { + error = 'File size exceeds the limit'; + target.value = ''; + return; + } setFiles(target.files); }; diff --git a/src/routes/(console)/project-[project]/storage/bucket-[bucket]/create-file/step1.svelte b/src/routes/(console)/project-[project]/storage/bucket-[bucket]/create-file/step1.svelte index baac12a12..ff4c02639 100644 --- a/src/routes/(console)/project-[project]/storage/bucket-[bucket]/create-file/step1.svelte +++ b/src/routes/(console)/project-[project]/storage/bucket-[bucket]/create-file/step1.svelte @@ -47,7 +47,9 @@ required bind:files={$createFile.files} allowedFileExtensions={$bucket.allowedFileExtensions} - maxSize={$bucket.maximumFileSize} /> + maxSize={isCloud + ? $bucket.maximumFileSize + : ($bucket.maximumFileSize ?? sizeToBytes(service, 'MB', 1000))} /> {#if !showCustomId}