From 406b93019ca43525f5d10091dab36e63df738dd6 Mon Sep 17 00:00:00 2001 From: yuyx <237899745@qq.com> Date: Tue, 25 Nov 2025 09:57:06 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E5=AD=98=E5=82=A8=E7=BB=9F=E8=AE=A1=E7=A3=81?= =?UTF-8?q?=E7=9B=98=E5=AE=B9=E9=87=8F=E6=98=BE=E7=A4=BA=E4=B8=BA0?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将存储目录路径从 local-storage 改为 storage,与 storage.js 保持一致 - 添加目录不存在时自动创建的逻辑 - 支持 STORAGE_ROOT 环境变量配置 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- backend/server.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/server.js b/backend/server.js index f8ee82f..40462e1 100644 --- a/backend/server.js +++ b/backend/server.js @@ -3257,14 +3257,19 @@ app.post('/api/admin/settings/test-smtp', authMiddleware, adminMiddleware, async // 获取服务器存储统计信息 app.get('/api/admin/storage-stats', authMiddleware, adminMiddleware, async (req, res) => { try { - // 获取本地存储目录 - const localStorageDir = path.join(__dirname, 'local-storage'); - + // 获取本地存储目录(与 storage.js 保持一致) + const localStorageDir = process.env.STORAGE_ROOT || path.join(__dirname, 'storage'); + + // 确保存储目录存在 + if (!fs.existsSync(localStorageDir)) { + fs.mkdirSync(localStorageDir, { recursive: true }); + } + // 获取磁盘信息(使用df命令) let totalDisk = 0; let usedDisk = 0; let availableDisk = 0; - + try { // 获取本地存储目录所在分区的磁盘信息(避免使用shell) const { stdout: dfOutput } = await execFileAsync('df', ['-B', '1', localStorageDir], { encoding: 'utf8' }); @@ -3292,10 +3297,10 @@ app.get('/api/admin/storage-stats', authMiddleware, adminMiddleware, async (req, ['logicaldisk', 'where', `DeviceID='${normalizedDrive}:'`, 'get', 'Size,FreeSpace', '/value'], { encoding: 'utf8' } ); - + const freeMatch = wmicOutput.match(/FreeSpace=(\d+)/); const sizeMatch = wmicOutput.match(/Size=(\d+)/); - + if (sizeMatch && freeMatch) { totalDisk = parseInt(sizeMatch[1]) || 0; availableDisk = parseInt(freeMatch[1]) || 0;