Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
84427d8ca3 |
@@ -481,17 +481,21 @@ export const paypalClientId = (s: PublicSettings | null) =>
|
|||||||
|
|
||||||
/** Lädt eine Datei nach Directus und liefert deren ID. */
|
/** Lädt eine Datei nach Directus und liefert deren ID. */
|
||||||
export async function uploadFile(datei: File): Promise<string> {
|
export async function uploadFile(datei: File): Promise<string> {
|
||||||
const form = new FormData();
|
// Als Base64 (Data-URL) an den öffentlichen Upload-Proxy schicken – so können
|
||||||
form.append('file', datei);
|
// auch Gäste (Bestellung ohne Login) Motive/Quelldateien hochladen. Der direkte
|
||||||
|
// Directus-/files-Upload braucht einen Token, den Gäste nicht haben.
|
||||||
const session = await ensureFreshToken();
|
const data_base64 = await new Promise<string>((resolve, reject) => {
|
||||||
const res = await fetch(`${BASE}/files`, {
|
const r = new FileReader();
|
||||||
method: 'POST',
|
r.onload = () => resolve(String(r.result || ''));
|
||||||
headers: session ? { Authorization: `Bearer ${session.access_token}` } : undefined,
|
r.onerror = () => reject(new Error('Datei konnte nicht gelesen werden.'));
|
||||||
body: form,
|
r.readAsDataURL(datei);
|
||||||
});
|
});
|
||||||
const data = await parse(res);
|
const data = await request('/skrift-orders/upload', {
|
||||||
return data?.data?.id;
|
method: 'POST',
|
||||||
|
auth: false,
|
||||||
|
body: { filename: datei.name, content_type: datei.type || 'application/octet-stream', data_base64 },
|
||||||
|
});
|
||||||
|
return data?.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Angebotsanfrage ──────────────────────────────────────────────────────── */
|
/* ── Angebotsanfrage ──────────────────────────────────────────────────────── */
|
||||||
|
|||||||
Reference in New Issue
Block a user