const UploadManager = { files: [], // 待发送的文件列表 allowedTypes: '.jpg,.jpeg,.png,.gif,.webp,.js,.ts,.py,.java,.cpp,.c,.html,.css,.json,.xml,.txt,.md,.go,.rs,.php,.rb,.sql,.yaml,.yml,.sh,.bat', init() { const btn = document.getElementById('uploadBtn'); if (btn) { btn.addEventListener('click', () => this.openFileSelector()); } }, openFileSelector() { const input = document.createElement('input'); input.type = 'file'; input.accept = this.allowedTypes; input.multiple = true; input.onchange = (e) => this.handleFiles(e.target.files); input.click(); }, async handleFiles(fileList) { for (const file of fileList) { const formData = new FormData(); formData.append('file', file); try { const res = await api.upload('/upload', formData); this.files.push(res.data); this.renderPreview(); } catch (err) { alert('文件上传失败: ' + err.message); } } }, renderPreview() { const preview = document.getElementById('filePreview'); if (!preview) return; preview.innerHTML = this.files.map((f, i) => `