2026-03-24 22:52:47 +08:00

33 lines
1.0 KiB
TypeScript

import express from "express";
import { z } from "zod";
import { exec } from "child_process";
import { success, error } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
import { isEletron } from "@/utils/getPath";
import u from "@/utils";
import path from "path";
const router = express.Router();
export default router.post(
"/",
validateFields({
path: z.string(),
}),
async (req, res) => {
if (!isEletron()) {
return res.status(400).send(error("仅支持客户端打开文件夹"));
}
const { path: folderPath } = req.body;
const platform = process.platform;
const target = u.getPath(folderPath);
console.log("%c Line:23 🎂 target", "background:#fca650", target);
const cmd = platform === "win32" ? `explorer "${target}"` : platform === "darwin" ? `open "${target}"` : `xdg-open "${target}"`;
exec(cmd, (err) => {
if (err) {
return res.status(200).send(error(err.message));
}
res.status(200).send(success("打开文件夹成功"));
});
},
);