Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -408,8 +408,8 @@ HTML_CONTENT = """
|
|
| 408 |
const uploadForm = document.getElementById('uploadForm');
|
| 409 |
const progressContainer = document.getElementById('progressContainer');
|
| 410 |
const loadingSpinner = document.getElementById('loadingSpinner');
|
| 411 |
-
|
| 412 |
-
|
| 413 |
const modal = document.getElementById('embedModal');
|
| 414 |
const span = document.getElementsByClassName("close")[0];
|
| 415 |
const embedLinkInput = document.getElementById('embedLink');
|
|
@@ -486,41 +486,49 @@ HTML_CONTENT = """
|
|
| 486 |
const formData = new FormData();
|
| 487 |
formData.append('file', file);
|
| 488 |
|
| 489 |
-
|
| 490 |
-
|
| 491 |
-
|
| 492 |
-
|
| 493 |
-
|
| 494 |
-
|
| 495 |
-
|
| 496 |
-
|
| 497 |
-
|
| 498 |
-
|
| 499 |
-
|
| 500 |
-
|
| 501 |
-
|
| 502 |
-
|
| 503 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 504 |
}
|
| 505 |
-
|
| 506 |
-
|
| 507 |
-
xhr.onerror = function() {
|
| 508 |
-
throw new Error('Network error occurred');
|
| 509 |
-
};
|
| 510 |
-
|
| 511 |
-
xhr.send(formData);
|
| 512 |
-
|
| 513 |
-
await new Promise((resolve, reject) => {
|
| 514 |
-
xhr.onloadend = resolve;
|
| 515 |
-
xhr.onerror = reject;
|
| 516 |
-
});
|
| 517 |
-
|
| 518 |
-
} catch (error) {
|
| 519 |
-
console.error('Upload error:', error);
|
| 520 |
-
alert('Upload failed: ' + error.message);
|
| 521 |
-
} finally {
|
| 522 |
-
resetUploadState();
|
| 523 |
}
|
|
|
|
|
|
|
| 524 |
}
|
| 525 |
|
| 526 |
function createProgressBar(fileName) {
|
|
|
|
| 408 |
const uploadForm = document.getElementById('uploadForm');
|
| 409 |
const progressContainer = document.getElementById('progressContainer');
|
| 410 |
const loadingSpinner = document.getElementById('loadingSpinner');
|
| 411 |
+
const resultContainer = document.getElementById('resultContainer');
|
| 412 |
+
const dropZone = document.getElementById('dropZone');
|
| 413 |
const modal = document.getElementById('embedModal');
|
| 414 |
const span = document.getElementsByClassName("close")[0];
|
| 415 |
const embedLinkInput = document.getElementById('embedLink');
|
|
|
|
| 486 |
const formData = new FormData();
|
| 487 |
formData.append('file', file);
|
| 488 |
|
| 489 |
+
let retries = 0;
|
| 490 |
+
const maxRetries = 5;
|
| 491 |
+
const retryDelay = 1000;
|
| 492 |
+
|
| 493 |
+
while (retries < maxRetries) {
|
| 494 |
+
try {
|
| 495 |
+
const xhr = new XMLHttpRequest();
|
| 496 |
+
xhr.open('POST', '/upload', true);
|
| 497 |
+
xhr.upload.onprogress = (event) => updateProgress(event, progressBar.querySelector('.progress'));
|
| 498 |
+
|
| 499 |
+
const uploadPromise = new Promise((resolve, reject) => {
|
| 500 |
+
xhr.onload = function() {
|
| 501 |
+
if (xhr.status === 200) {
|
| 502 |
+
const response = JSON.parse(xhr.responseText);
|
| 503 |
+
if (response.url) {
|
| 504 |
+
resolve(response.url);
|
| 505 |
+
} else {
|
| 506 |
+
reject(new Error('Upload failed: ' + response.error));
|
| 507 |
+
}
|
| 508 |
+
} else {
|
| 509 |
+
reject(new Error(`HTTP error! status: ${xhr.status}`));
|
| 510 |
+
}
|
| 511 |
+
};
|
| 512 |
+
xhr.onerror = () => reject(new Error('Network error occurred'));
|
| 513 |
+
});
|
| 514 |
+
|
| 515 |
+
xhr.send(formData);
|
| 516 |
+
|
| 517 |
+
const url = await uploadPromise;
|
| 518 |
+
addResultLink(url, file.name);
|
| 519 |
+
break; // Success, exit the retry loop
|
| 520 |
+
} catch (error) {
|
| 521 |
+
console.error('Upload error:', error);
|
| 522 |
+
retries++;
|
| 523 |
+
if (retries >= maxRetries) {
|
| 524 |
+
alert('Upload failed after multiple attempts: ' + error.message);
|
| 525 |
+
break;
|
| 526 |
}
|
| 527 |
+
await new Promise(resolve => setTimeout(resolve, retryDelay));
|
| 528 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 529 |
}
|
| 530 |
+
|
| 531 |
+
resetUploadState();
|
| 532 |
}
|
| 533 |
|
| 534 |
function createProgressBar(fileName) {
|