adds photo upload size limiter

This commit is contained in:
Christian Beutel
2024-11-15 16:36:52 +01:00
parent 1b30c6cc1e
commit 24ef5998c0
12 changed files with 28 additions and 3 deletions

View File

@@ -2,6 +2,8 @@
import { getFileURL, readAsDataURLAsync } from "$lib/util/file_util";
import { onMount } from "svelte";
import PhotoCard from "../photo_card.svelte";
import { show_toast } from "$lib/stores/toast_store";
import { _ } from "svelte-i18n";
export let id: string;
export let photos: string[];
@@ -10,6 +12,7 @@
export let thumbnail: number = 0;
export let showThumbnailControls: boolean = true;
export let showExifControls: boolean = false;
export let maxSizeBytes = 5242880;
let photoPreviews: string[] = [];
@@ -55,11 +58,21 @@
}
for (const file of files) {
if (file.size > maxSizeBytes) {
show_toast({
type: "error",
text: $_("file-too-big", {
values: { file: file.name, size: "5 MB" },
}),
icon: "close",
});
continue;
}
let photoFile = file;
if (!file.type.startsWith("image")) {
continue;
} else if (file.type === "image/heic") {
const heic2any = (await import("heic2any")).default
const heic2any = (await import("heic2any")).default;
photoFile = new File(
[
(await heic2any({

View File

@@ -276,7 +276,7 @@
<div class="flex flex-col items-center">
<span>{$_("category")}</span>
<span class="font-semibold text-lg"
>{trail.expand.category.name}</span
>{$_(trail.expand.category.name)}</span
>
</div>
{/if}

View File

@@ -91,6 +91,7 @@
"export-all-trails": "Alle Routen exportieren",
"features": "Features",
"file-format": "Dateiformat",
"file-too-big": "",
"filter-categories": "Kategorien filtern",
"focus-map-on": "Karte fokussieren auf",
"french": "Französisch",

View File

@@ -91,6 +91,7 @@
"export-all-trails": "Export all trails",
"features": "Features",
"file-format": "File format",
"file-too-big": "File {file} is too big (max. {size})",
"filter-categories": "Filter categories",
"focus-map-on": "Focus map on",
"french": "French",

View File

@@ -91,6 +91,7 @@
"export-all-trails": "",
"features": "Fonctionnalités",
"file-format": "",
"file-too-big": "",
"filter-categories": "",
"focus-map-on": "",
"french": "Français",

View File

@@ -91,6 +91,7 @@
"export-all-trails": "",
"features": "Jellemzők",
"file-format": "",
"file-too-big": "",
"filter-categories": "",
"focus-map-on": "",
"french": "Francia",

View File

@@ -91,6 +91,7 @@
"export-all-trails": "",
"features": "Caratteristiche",
"file-format": "Formato del file",
"file-too-big": "",
"filter-categories": "",
"focus-map-on": "",
"french": "Francese",

View File

@@ -91,6 +91,7 @@
"export-all-trails": "",
"features": "Kenmerken",
"file-format": "",
"file-too-big": "",
"filter-categories": "",
"focus-map-on": "",
"french": "Frans",

View File

@@ -91,6 +91,7 @@
"export-all-trails": "",
"features": "Funkcje",
"file-format": "",
"file-too-big": "",
"filter-categories": "",
"focus-map-on": "",
"french": "Francuski",

View File

@@ -91,6 +91,7 @@
"export-all-trails": "",
"features": "Características",
"file-format": "",
"file-too-big": "",
"filter-categories": "",
"focus-map-on": "",
"french": "Francês",

View File

@@ -91,6 +91,7 @@
"export-all-trails": "",
"features": "特性",
"file-format": "",
"file-too-big": "",
"filter-categories": "",
"focus-map-on": "",
"french": "法语",

View File

@@ -296,8 +296,11 @@
elevation_loss: $form.elevation_loss,
duration: $form.duration ? $form.duration * 60 : undefined,
});
console.log(selectedFile.type);
log.expand.gpx_data = gpxData;
log._gpx = selectedFile;
const blob = new Blob([gpxData], { type: selectedFile.type });
log._gpx = new File([blob], selectedFile.name, { type: selectedFile.type });
$form.expand.summit_logs.push(log);