diff --git a/backend/lib/dataTransfer/index.js b/backend/lib/dataTransfer/index.js index 6f62d97..5dc57bb 100644 --- a/backend/lib/dataTransfer/index.js +++ b/backend/lib/dataTransfer/index.js @@ -122,6 +122,8 @@ function cleanupUploads(dir, { maxAgeMs = 24 * 60 * 60 * 1000 } = {}) { const file = path.join(dir, name) try { const stat = fs.statSync(file) + /* 只删普通文件:目录里还套着 multer 的 uploads/,别把目录本身当过期文件删 */ + if (!stat.isFile()) continue if (Date.now() - stat.mtimeMs > maxAgeMs) { fs.unlinkSync(file); removed++ } } catch { /* 单个文件失败不影响其它清理 */ } } diff --git a/backend/routes/dataTransfer.js b/backend/routes/dataTransfer.js index 5b68933..ca9881a 100644 --- a/backend/routes/dataTransfer.js +++ b/backend/routes/dataTransfer.js @@ -121,6 +121,8 @@ router.post('/import/preview', guard, upload.single('file'), async (req, res) => fs.renameSync(req.file.path, target) /* 顺手清掉 24 小时前的旧包,避免上传目录无限增长(本次刚移入的 mtime 是现在,不会被删) */ transfer.cleanupUploads(TRANSFER_DIR) + /* multer 落盘后因体积/字段错误被丢弃的残片留在 uploads/,一并清 */ + transfer.cleanupUploads(UPLOAD_DIR) const categories = parseCategories(req.body?.categories) const preview = await transfer.previewImport(db, target, {