feat: 将截图上传逻辑从直接文件上传改为客户端base64编码处理,并增加了图片类型校验。

This commit is contained in:
zulifeng 2026-01-30 11:26:18 +08:00
parent feed4f84c8
commit 01927310cf

View File

@ -3238,35 +3238,45 @@ document.addEventListener("DOMContentLoaded", function () {
input.addEventListener("change", async function () { input.addEventListener("change", async function () {
if (!this.files.length) return; if (!this.files.length) return;
const formData = new FormData(); const files = Array.from(this.files);
for (const file of this.files) { const newBase64Images = [];
formData.append("screenshots", file);
for (const file of files) {
// 验证是否为图片
if (!file.type.startsWith("image/")) {
console.warn(`File is not an image: ${file.name}`);
continue;
} }
try { try {
const response = await authenticatedFetch("/api/upload", { const base64 = await new Promise((resolve, reject) => {
method: "POST", const reader = new FileReader();
body: formData, reader.onload = () => resolve(reader.result);
reader.onerror = (error) => reject(error);
reader.readAsDataURL(file);
}); });
newBase64Images.push(base64);
if (response.ok) { } catch (error) {
const data = await response.json(); console.error(`Error converting file ${file.name} to base64:`, error);
const filePaths = data.filePaths || []; }
}
if (type === "create") { if (type === "create") {
createUploadedScreenshots = [ createUploadedScreenshots = [
...createUploadedScreenshots, ...createUploadedScreenshots,
...filePaths, ...newBase64Images,
]; ];
renderScreenshotPreviews("create", createUploadedScreenshots); renderScreenshotPreviews("create", createUploadedScreenshots);
} else { } else {
editUploadedScreenshots = [...editUploadedScreenshots, ...filePaths]; editUploadedScreenshots = [
...editUploadedScreenshots,
...newBase64Images,
];
renderScreenshotPreviews("edit", editUploadedScreenshots); renderScreenshotPreviews("edit", editUploadedScreenshots);
} }
}
} catch (error) { // 清除 input以便再次选择同一张图片
console.error("Error uploading screenshots:", error); this.value = "";
}
}); });
} }