Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 579a0ddb75 | |||
| 0f21e8d9ca | |||
| 12f7240cd2 | |||
| 54d8d61358 | |||
| 5052dd9de6 |
+1
-1
@@ -108,7 +108,7 @@ app.config['UPLOAD_FOLDER'] = cfg.UPLOAD_FOLDER
|
||||
app.config['THUMBNAIL_FOLDER'] = cfg.THUMBNAIL_FOLDER
|
||||
app.config['PREVIEW_FOLDER'] = cfg.PREVIEW_FOLDER
|
||||
app.config['ALLOWED_EXTENSIONS'] = set(cfg.ALLOWED_EXTENSIONS)
|
||||
app.config['MAX_CONTENT_LENGTH'] = max(cfg.MAX_UPLOAD_MB, cfg.IMAGE_MAX_UPLOAD_MB, cfg.VIDEO_MAX_UPLOAD_MB) * 1024 * 1024
|
||||
app.config['MAX_CONTENT_LENGTH'] = 1024 * 1024 * 1024
|
||||
app.config['SESSION_COOKIE_HTTPONLY'] = True
|
||||
app.config['SESSION_COOKIE_SAMESITE'] = 'Lax'
|
||||
app.config['SESSION_COOKIE_SECURE'] = cfg.SSL_ENABLED if os.getenv('INVENTAR_SESSION_COOKIE_SECURE') is None else os.getenv('INVENTAR_SESSION_COOKIE_SECURE', '').strip().lower() in ('1', 'true', 'yes', 'on')
|
||||
|
||||
@@ -149,57 +149,66 @@
|
||||
<div id="status-message"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<script>
|
||||
document.getElementById('uploadForm').addEventListener('submit', async function(e) {
|
||||
e.preventDefault(); // Verhindert das Neuladen der Seite
|
||||
e.preventDefault();
|
||||
|
||||
const form = e.target;
|
||||
const submitBtn = document.getElementById('submitBtn');
|
||||
const statusDiv = document.getElementById('status-message');
|
||||
|
||||
// UI auf "Laden" setzen
|
||||
submitBtn.disabled = true;
|
||||
submitBtn.innerText = 'Wird verarbeitet...';
|
||||
statusDiv.className = 'loading';
|
||||
statusDiv.style.display = 'block';
|
||||
statusDiv.innerHTML = '<div class="spinner"></div> Lade Dateien hoch und verarbeite Bilder... Bitte warten.';
|
||||
|
||||
// FormData sammelt alle Inputs aus dem Formular (csv_file und images)
|
||||
const formData = new FormData(form);
|
||||
|
||||
try {
|
||||
// Sende die Daten an den Flask-Endpoint
|
||||
const response = await fetch('/upload_csv_batch', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
});
|
||||
const csrfToken = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content');
|
||||
|
||||
const result = await response.json();
|
||||
const fetchOptions = {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
credentials: 'include'
|
||||
};
|
||||
|
||||
if (csrfToken) {
|
||||
fetchOptions.headers = {
|
||||
'X-CSRFToken': csrfToken
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch('/upload_csv_batch', fetchOptions);
|
||||
|
||||
// Antwort einmalig als Text auslesen, um sowohl JSON als auch HTML-Fehler abzufangen
|
||||
const responseText = await response.text();
|
||||
|
||||
let result;
|
||||
try {
|
||||
result = JSON.parse(responseText);
|
||||
} catch (jsonError) {
|
||||
console.error("Server hat kein JSON gesendet. Antwort war:", responseText);
|
||||
throw new Error("Der Server hat einen HTML-Fehler zurückgegeben (z.B. Nginx 413 Entity Too Large oder Server-Crash). Siehe F12 Konsole.");
|
||||
}
|
||||
|
||||
if (response.ok && result.success) {
|
||||
// Erfolgreicher Upload
|
||||
statusDiv.className = 'success';
|
||||
statusDiv.innerHTML = `
|
||||
<strong>Erfolg!</strong><br>
|
||||
${result.message}
|
||||
`;
|
||||
form.reset(); // Formular nach Erfolg leeren
|
||||
statusDiv.innerHTML = `<strong>Erfolg!</strong><br>${result.message}`;
|
||||
form.reset();
|
||||
} else {
|
||||
// Fehler vom Server (z.B. falsches Format, fehlende Rechte)
|
||||
statusDiv.className = 'error';
|
||||
statusDiv.innerHTML = `<strong>Fehler:</strong> ${result.message || 'Ein unbekannter Fehler ist aufgetreten.'}`;
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
// Netzwerkfehler oder Server-Absturz
|
||||
statusDiv.className = 'error';
|
||||
statusDiv.innerHTML = `<strong>Verbindungsfehler:</strong> Konnte den Server nicht erreichen.`;
|
||||
statusDiv.innerHTML = `<strong>Fehler:</strong> ${error.message}`;
|
||||
console.error('Upload Error:', error);
|
||||
} finally {
|
||||
// UI wieder freigeben
|
||||
submitBtn.disabled = false;
|
||||
submitBtn.innerText = 'Daten hochladen';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
</script>
|
||||
Reference in New Issue
Block a user