fix: 修复文件夹详情功能 + 添加文件夹分享

修复内容:

1. 【文件夹详情无反应】
   - 问题: folder-info API中变量名冲突
   - 原因: API参数名'path'与Node.js的'path'模块冲突
   - 具体: 第1193行 `const itemPath = path.join(dirPath, item.name)`
            这里的path被当作API参数(字符串)而不是模块
   - 修复:
     * API参数改为 `const { path: dirPath, folderName }`
     * 使用dirPath替代path
     * countFiles函数参数改为countDirPath避免混淆
   - 效果: 查看详情功能现在正常工作

新功能:

2. 【文件夹分享】
   - 移除分享功能的文件限制
   - 右键菜单"分享"选项对文件和文件夹都显示
   - 文件夹分享后可访问该文件夹下所有文件
   - 与现有分享API完全兼容(share_type支持file和all)

技术细节:
- backend/server.js:
  * 第1138行: path参数改为dirPath
  * 第1186行: countFiles函数参数改为countDirPath
  * 第1193行: 使用path.join正确引用模块

- frontend/app.html:
  * 移除 `v-if="!contextMenuFile.isDirectory"` 限制
  * 文件夹也显示"分享"菜单项

使用方式:
1. 右键文件夹 → "查看详情" → 显示大小、文件数、子文件夹数
2. 右键文件夹 → "分享" → 分享整个文件夹

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
WanWanYun
2025-11-16 00:15:43 +08:00
parent e10ff04166
commit 0bb7bd5219
2 changed files with 6 additions and 6 deletions

View File

@@ -1135,7 +1135,7 @@ app.post('/api/files/mkdir', authMiddleware, async (req, res) => {
// 获取文件夹详情(大小统计)
app.post('/api/files/folder-info', authMiddleware, async (req, res) => {
const { path, folderName } = req.body;
const { path: dirPath, folderName } = req.body;
let storage;
if (!folderName) {
@@ -1159,7 +1159,7 @@ app.post('/api/files/folder-info', authMiddleware, async (req, res) => {
storage = await storageInterface.connect();
// 构造文件夹路径
const basePath = path || '/';
const basePath = dirPath || '/';
const folderPath = basePath === '/' ? `/${folderName}` : `${basePath}/${folderName}`;
const fullPath = storage.getFullPath(folderPath);
@@ -1183,14 +1183,14 @@ app.post('/api/files/folder-info', authMiddleware, async (req, res) => {
const folderSize = storage.calculateFolderSize(fullPath);
// 计算文件数量
function countFiles(dirPath) {
function countFiles(countDirPath) {
let fileCount = 0;
let folderCount = 0;
const items = fs.readdirSync(dirPath, { withFileTypes: true });
const items = fs.readdirSync(countDirPath, { withFileTypes: true });
for (const item of items) {
const itemPath = path.join(dirPath, item.name);
const itemPath = path.join(countDirPath, item.name);
if (item.isDirectory()) {
folderCount++;

View File

@@ -1773,7 +1773,7 @@
<div v-if="contextMenuFile.isDirectory" class="context-menu-item" @click="contextMenuAction('info')">
<i class="fas fa-info-circle"></i> 查看详情
</div>
<div v-if="!contextMenuFile.isDirectory" class="context-menu-item" @click="contextMenuAction('share')">
<div class="context-menu-item" @click="contextMenuAction('share')">
<i class="fas fa-share"></i> 分享
</div>
<div class="context-menu-divider"></div>