33 lines
1.0 KiB
TypeScript
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("打开文件夹成功"));
|
|
});
|
|
},
|
|
);
|