// 文件浏览器功能 class FileBrowser { constructor() { this.currentPath = new URLSearchParams(window.location.search).get('path') || ''; this.uploadingFiles = new Map(); // 存储正在上传的文件 this.init(); } init() { this.loadFiles(); this.updateBreadcrumb(); this.bindEvents(); } // 绑定事件 bindEvents() { // 上传按钮事件 document.getElementById('upload-btn').addEventListener('click', () => { this.showUploadDialog(); }); // 文件选择事件 document.getElementById('file-input').addEventListener('change', (e) => { this.handleFileSelect(e); }); // 创建目录按钮事件 document.getElementById('create-dir-btn').addEventListener('click', () => { this.showCreateDirectoryDialog(); }); // 删除目录按钮事件 document.getElementById('delete-dir-btn').addEventListener('click', () => { this.showDeleteDirectoryDialog(); }); } // 加载文件列表 loadFiles() { const contentElement = document.getElementById('file-list-content'); Utils.showLoading(contentElement); const url = `/api/files?path=${encodeURIComponent(this.currentPath)}`; Utils.ajax(url) .then(data => { this.renderFiles(data.files); }) .catch(error => { Utils.showError(contentElement, error.message); }); } // 渲染文件列表 renderFiles(files) { const contentElement = document.getElementById('file-list-content'); // 检查是否显示删除目录按钮 this.updateDeleteDirectoryButton(files); if (files.length === 0) { contentElement.innerHTML = '