From b71b8c1b23ca773523ad934766ac9c28e78bd0f9 Mon Sep 17 00:00:00 2001 From: eust-w Date: Tue, 23 Sep 2025 11:18:55 +0800 Subject: [PATCH] :sparkles: upload image one by one --- templates/local_index.html | 48 ++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/templates/local_index.html b/templates/local_index.html index 0e65449..0a71f41 100644 --- a/templates/local_index.html +++ b/templates/local_index.html @@ -824,35 +824,43 @@ updateDataStats(); } - // 批量上传图片(调用批量API以利用多卡并行) + // 批量上传图片(串行:并发=1,每次上传一张,调用 /api/add_image) async function uploadBatchImages(files) { try { const progressDiv = document.getElementById('imageUploadProgress'); const progressBar = progressDiv.querySelector('.progress-bar'); const progressText = document.getElementById('imageProgressText'); - + progressDiv.style.display = 'block'; progressText.textContent = `0/${files.length}`; - progressBar.style.width = '10%'; - - showAlert('info', `正在批量上传 ${files.length} 张图片...`); - - const formData = new FormData(); + progressBar.style.width = '0%'; + + showAlert('info', `开始上传 ${files.length} 张图片(串行)...`); + + let successCount = 0; for (let i = 0; i < files.length; i++) { - formData.append('images', files[i]); + const formData = new FormData(); + formData.append('image', files[i]); + + try { + const resp = await fetch('/api/add_image', { method: 'POST', body: formData }); + const data = await resp.json(); + if (data && data.success) { + successCount++; + } else { + // 不中断流程,记录失败 + console.warn('Upload failed for file:', files[i].name, data?.error); + } + } catch (e) { + console.warn('Request failed for file:', files[i].name, e); + } + + const progress = Math.round(((i + 1) / files.length) * 100); + progressBar.style.width = `${progress}%`; + progressText.textContent = `${i + 1}/${files.length}`; } - - const response = await fetch('/api/add_images_batch', { - method: 'POST', - body: formData - }); - const data = await response.json(); - if (!data.success) { - throw new Error(data.error || '批量上传失败'); - } - progressBar.style.width = '100%'; - progressText.textContent = `${files.length}/${files.length}`; - showAlert('success', data.message || `成功上传 ${files.length} 张图片`); + + showAlert('success', `上传完成:成功 ${successCount}/${files.length} 张`); await autoSaveIndex(); updateDataStats(); } catch (error) {