fix: remove .doc support — libreoffice unavailable on Штурвал
Deploy contracts-flask / validate (push) Successful in 0s
Deploy contracts-flask / validate (push) Successful in 0s
This commit is contained in:
+3
-26
@@ -211,21 +211,14 @@ window.toggleClassifyDetail = async function(i) {
|
||||
* uploadFile(file, onProgress) — загрузка одного файла на бэкенд.
|
||||
*
|
||||
* v2.0.1: fetch() вместо XHR — XHR давал ERR_CONNECTION_RESET (drhider v0.0.29)
|
||||
* v2.0.2: убрана конвертация .doc (libreoffice недоступен на Штурвале)
|
||||
* Прогресс: без процентов (fetch не поддерживает), только статус.
|
||||
*
|
||||
* Особенности:
|
||||
* - .doc (не .docx!) конвертируется через CONVERT_URL перед загрузкой
|
||||
* - onProgress(pct) — сохранён для совместимости, вызывается с 0 и 100
|
||||
* - Возвращает Promise<ответ API>
|
||||
* Возвращает Promise<ответ API>
|
||||
*/
|
||||
function uploadFile(file, onProgress, zipSource) {
|
||||
// .doc → конвертация в docx (старый формат Word)
|
||||
var isDoc = file.name.toLowerCase().endsWith('.doc') && !file.name.toLowerCase().endsWith('.docx');
|
||||
|
||||
function doUpload(uploadFile, uploadName) {
|
||||
if (onProgress) onProgress(0);
|
||||
var fd = new FormData();
|
||||
fd.append('files', uploadFile, uploadName);
|
||||
fd.append('files', file, file.name);
|
||||
if (state.contractId) fd.append('contract_id', state.contractId);
|
||||
fd.append('batch_id', state.batchId);
|
||||
if (zipSource) fd.append('zip_source', zipSource);
|
||||
@@ -243,27 +236,11 @@ function uploadFile(file, onProgress, zipSource) {
|
||||
throw new Error(data.error || 'Неизвестная ошибка');
|
||||
})
|
||||
.catch(function(e) {
|
||||
// Перезапись fetch-ошибок в понятные сообщения
|
||||
if (e.message === 'Failed to fetch' || e.name === 'TypeError') {
|
||||
throw new Error('Сеть');
|
||||
}
|
||||
throw e;
|
||||
});
|
||||
}
|
||||
|
||||
if (isDoc) {
|
||||
return fetch(CONVERT_URL, { method: 'POST', body: file })
|
||||
.then(function(r) {
|
||||
if (!r.ok) throw new Error('Конвертация .doc');
|
||||
return r.blob();
|
||||
})
|
||||
.then(function(blob) {
|
||||
if (blob.size < 100) throw new Error('Конвертация .doc');
|
||||
return doUpload(blob, file.name.replace(/\.doc$/i, '.docx'));
|
||||
});
|
||||
} else {
|
||||
return doUpload(file, file.name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
Загрузка договоров/приложений/спецификаций
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<input type="file" id="fileInput" accept=".docx,.doc,.pdf,.zip" multiple style="margin-bottom:6px;width:100%;">
|
||||
<input type="file" id="fileInput" accept=".docx,.pdf,.zip" multiple style="margin-bottom:6px;width:100%;">
|
||||
<div style="text-align:right;font-size:11px;color:var(--muted);margin-bottom:6px;">Порядок определяется автоматически при классификации</div>
|
||||
<div style="font-size:11px;color:var(--muted);margin-bottom:6px;">⚠ При совпадении имён — запрос на перезапись (OK / Отмена). Файлы из ZIP-архивов загружаются через тот же поток.</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user