diff --git a/site/templates/upload.html b/site/templates/upload.html index 4659968..906e603 100644 --- a/site/templates/upload.html +++ b/site/templates/upload.html @@ -59,7 +59,7 @@
Nubes - Сверка договоров v1.38 + Сверка договоров v1.39
@@ -155,47 +155,33 @@ window.removeFile = removeFile; - // ── Загрузка base64 (JSON, с повторами) ────────────────── + // ── Загрузка base64 (JSON) ────────────────────────────────── function uploadFileJSON(file, cid, onProgress) { - var b64 = null; - - function tryUpload(attempt) { - return new Promise(function(resolve, reject) { - function doSend() { - var xhr = new XMLHttpRequest(); - xhr.open('POST', '/upload'); - xhr.setRequestHeader('Content-Type', 'application/json'); - xhr.timeout = 120000; - xhr.upload.onprogress = function(e) { - if (e.lengthComputable && onProgress) onProgress(Math.round(e.loaded / e.total * 100)); - }; - xhr.onload = function() { - if (xhr.status === 200) { - try { resolve(JSON.parse(xhr.responseText)); } - catch(e) { reject(new Error('Bad JSON')); } - } else { reject(new Error('HTTP ' + xhr.status)); } - }; - xhr.onerror = function() { reject(new Error('Сеть')); }; - xhr.ontimeout = function() { reject(new Error('Таймаут')); }; - xhr.send(JSON.stringify({filename: file.name, data: b64, cid: cid || null})); - } - - if (b64) { doSend(); return; } - var reader = new FileReader(); - reader.onload = function() { b64 = reader.result.split(',')[1]; doSend(); }; - reader.onerror = function() { reject(new Error('Read error')); }; - reader.readAsDataURL(file); - }).catch(function(err) { - if (attempt < 3) { - return new Promise(function(r) { setTimeout(r, 1000); }).then(function() { - return tryUpload(attempt + 1); - }); - } - throw err; - }); - } - return tryUpload(1); + return new Promise(function(resolve, reject) { + var reader = new FileReader(); + reader.onload = function() { + var b64 = reader.result.split(',')[1]; + var xhr = new XMLHttpRequest(); + xhr.open('POST', '/upload'); + xhr.setRequestHeader('Content-Type', 'application/json'); + xhr.timeout = 30000; + xhr.upload.onprogress = function(e) { + if (e.lengthComputable && onProgress) onProgress(Math.round(e.loaded / e.total * 100)); + }; + xhr.onload = function() { + if (xhr.status === 200) { + try { resolve(JSON.parse(xhr.responseText)); } + catch(e) { reject(new Error('Bad JSON')); } + } else { reject(new Error('HTTP ' + xhr.status)); } + }; + xhr.onerror = function() { reject(new Error('Сеть')); }; + xhr.ontimeout = function() { reject(new Error('Таймаут')); }; + xhr.send(JSON.stringify({filename: file.name, data: b64, cid: cid || null})); + }; + reader.onerror = function() { reject(new Error('Read error')); }; + reader.readAsDataURL(file); + }); } // ── Выбор файла → сразу загрузка ────────────────────────────