From 01927310cfdfed432545d3dedc4d6759504376b5 Mon Sep 17 00:00:00 2001 From: zulifeng Date: Fri, 30 Jan 2026 11:26:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B0=86=E6=88=AA=E5=9B=BE=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E9=80=BB=E8=BE=91=E4=BB=8E=E7=9B=B4=E6=8E=A5=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E6=94=B9=E4=B8=BA=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AFbase64=E7=BC=96=E7=A0=81=E5=A4=84=E7=90=86=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=9B=BE=E7=89=87=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=A0=A1=E9=AA=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/js/main.js | 62 ++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/frontend/js/main.js b/frontend/js/main.js index cb45060..49defaf 100644 --- a/frontend/js/main.js +++ b/frontend/js/main.js @@ -3238,35 +3238,45 @@ document.addEventListener("DOMContentLoaded", function () { input.addEventListener("change", async function () { if (!this.files.length) return; - const formData = new FormData(); - for (const file of this.files) { - formData.append("screenshots", file); - } + const files = Array.from(this.files); + const newBase64Images = []; - try { - const response = await authenticatedFetch("/api/upload", { - method: "POST", - body: formData, - }); - - if (response.ok) { - const data = await response.json(); - const filePaths = data.filePaths || []; - - if (type === "create") { - createUploadedScreenshots = [ - ...createUploadedScreenshots, - ...filePaths, - ]; - renderScreenshotPreviews("create", createUploadedScreenshots); - } else { - editUploadedScreenshots = [...editUploadedScreenshots, ...filePaths]; - renderScreenshotPreviews("edit", editUploadedScreenshots); - } + for (const file of files) { + // 验证是否为图片 + if (!file.type.startsWith("image/")) { + console.warn(`File is not an image: ${file.name}`); + continue; + } + + try { + const base64 = await new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = () => resolve(reader.result); + reader.onerror = (error) => reject(error); + reader.readAsDataURL(file); + }); + newBase64Images.push(base64); + } catch (error) { + console.error(`Error converting file ${file.name} to base64:`, error); } - } catch (error) { - console.error("Error uploading screenshots:", error); } + + if (type === "create") { + createUploadedScreenshots = [ + ...createUploadedScreenshots, + ...newBase64Images, + ]; + renderScreenshotPreviews("create", createUploadedScreenshots); + } else { + editUploadedScreenshots = [ + ...editUploadedScreenshots, + ...newBase64Images, + ]; + renderScreenshotPreviews("edit", editUploadedScreenshots); + } + + // 清除 input,以便再次选择同一张图片 + this.value = ""; }); }