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);
}
try { for (const file of files) {
const response = await authenticatedFetch("/api/upload", { // 验证是否为图片
method: "POST", if (!file.type.startsWith("image/")) {
body: formData, console.warn(`File is not an image: ${file.name}`);
}); continue;
}
if (response.ok) {
const data = await response.json(); try {
const filePaths = data.filePaths || []; const base64 = await new Promise((resolve, reject) => {
const reader = new FileReader();
if (type === "create") { reader.onload = () => resolve(reader.result);
createUploadedScreenshots = [ reader.onerror = (error) => reject(error);
...createUploadedScreenshots, reader.readAsDataURL(file);
...filePaths, });
]; newBase64Images.push(base64);
renderScreenshotPreviews("create", createUploadedScreenshots); } catch (error) {
} else { console.error(`Error converting file ${file.name} to base64:`, error);
editUploadedScreenshots = [...editUploadedScreenshots, ...filePaths];
renderScreenshotPreviews("edit", editUploadedScreenshots);
}
} }
} 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 = "";
}); });
} }