diff --git a/pages/uploader.html b/pages/uploader.html index 34d714a..afc6a10 100644 --- a/pages/uploader.html +++ b/pages/uploader.html @@ -1,26 +1,16 @@ - + 上传文件到 MinIO/S3 @@ -68,7 +52,6 @@

上传文件到 MinIO/S3

可拖拽或点击选择,支持多文件上传
-
-
- - +
- - + + +
- -
-
* 如 bucket 不存在请先在 MinIO 控制台创建
-
拖拽文件到此上传,或点击选择文件
-

上传结果 JSON 查看历史上传记录 ↗ diff --git a/scripts/uploader.js b/scripts/uploader.js index 37d6e74..d8480c2 100644 --- a/scripts/uploader.js +++ b/scripts/uploader.js @@ -1,14 +1,48 @@ +// uploader.js const dropArea = document.getElementById("drop-area"); const fileElem = document.getElementById("fileElem"); const uploadList = document.getElementById("uploadList"); const folderNameInput = document.getElementById("folderName"); -const folderSelect = document.getElementById("folderSelect"); +const editFolderBtn = document.getElementById("editFolderBtn"); const searchableSelect = document.getElementById("searchableSelect"); const bucketNameInput = document.getElementById("bucketName"); const jsonResult = document.getElementById("jsonResult"); - const API_UPLOAD = "http://app.wisdompulse.cn/api/v1/doc/upload-files"; +// =========== 目标路径输入可编辑/不可编辑切换 ============== +function getDefaultFolderPath() { + const now = new Date(); + const yyyy = now.getFullYear(); + const mm = (now.getMonth() + 1).toString().padStart(2, "0"); + const dd = now.getDate().toString().padStart(2, "0"); + return `Year-${yyyy}/${yyyy}${mm}${dd}`; +} +let isEditing = false; +folderNameInput.value = getDefaultFolderPath(); +editFolderBtn.onclick = function () { + if (!isEditing) { + folderNameInput.readOnly = false; + folderNameInput.style.background = "#fff"; + folderNameInput.focus(); + editFolderBtn.textContent = "完成"; + isEditing = true; + } else { + folderNameInput.readOnly = true; + folderNameInput.style.background = "#f7fafb"; + editFolderBtn.textContent = "修改"; + isEditing = false; + } +}; +folderNameInput.addEventListener("blur", function () { + if (isEditing) { + folderNameInput.readOnly = true; + folderNameInput.style.background = "#f7fafb"; + editFolderBtn.textContent = "修改"; + isEditing = false; + } +}); + +// =========== 拖拽、选择文件 ============== dropArea.addEventListener("click", () => fileElem.click()); dropArea.addEventListener("dragover", e => { e.preventDefault(); dropArea.classList.add("dragover"); @@ -23,19 +57,11 @@ dropArea.addEventListener("drop", e => { fileElem.addEventListener("change", () => handleFiles(fileElem.files)); function getTargetFolder() { - const selected = folderSelect?.value || ""; - const year = new Date().getFullYear(); - if (selected === "custom") { - return (folderNameInput.value || `Year-${year}/default`).trim().replace(/^\/+|\/+$/g, ""); - } else { - return selected || `Year-${year}/default`; - } + return (folderNameInput.value || getDefaultFolderPath()).trim().replace(/^\/+|\/+$/g, ""); } - function getSearchable() { return searchableSelect?.value === "true"; } - function getBucketName() { let bucket = (bucketNameInput.value || "").trim(); return bucket.replace(/^\/+|\/+$/g, ""); @@ -46,15 +72,14 @@ function createProgressItem(filename) { const wrapper = document.createElement("div"); wrapper.className = "progress-item"; wrapper.innerHTML = ` - ${filename} - - 0% - - `; + ${filename} + + 0% + + `; uploadList.appendChild(wrapper); return wrapper; } - function showMsg(msg, ok) { const div = document.createElement("div"); div.className = ok ? "success" : "error"; @@ -62,7 +87,7 @@ function showMsg(msg, ok) { uploadList.appendChild(div); } -// 批量上传(单次FormData),统一进度条管理,JSON右侧展示 +// =========== 主上传逻辑 =========== function handleFiles(fileList) { uploadList.innerHTML = ""; jsonResult.textContent = "{}"; @@ -173,7 +198,7 @@ function handleFiles(fileList) { xhr.send(form); } -// === 放在文件结尾,而不是 handleFiles 内部 === +// ======== Bucket切换提示 ======== const bucketTip = document.getElementById("bucketTip"); bucketNameInput.addEventListener("change", function () { if (bucketNameInput.value === "kbase-priv") { @@ -185,27 +210,3 @@ bucketNameInput.addEventListener("change", function () { } }); bucketNameInput.dispatchEvent(new Event("change")); - -document.addEventListener("DOMContentLoaded", function () { - const now = new Date(); - const year = now.getFullYear(); - const month = String(now.getMonth() + 1).padStart(2, '0'); - const day = String(now.getDate()).padStart(2, '0'); - const defaultFolderPath = `Year-${year}/${month}${day}`; - const folderSelect = document.getElementById("folderSelect"); - const folderNameInput = document.getElementById("folderName"); - const customFolderRow = document.getElementById("customFolderRow"); - - const defaultOption = document.getElementById("defaultFolderOption"); - defaultOption.value = defaultFolderPath; - defaultOption.textContent = defaultFolderPath; - folderSelect.value = defaultFolderPath; - - folderSelect.addEventListener("change", function () { - if (this.value === "custom") { - customFolderRow.style.display = "block"; - } else { - customFolderRow.style.display = "none"; - } - }); -});