feat: 将截图上传逻辑从直接文件上传改为客户端base64编码处理,并增加了图片类型校验。
This commit is contained in:
parent
feed4f84c8
commit
01927310cf
@ -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 = "";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user