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 = ""; }); }