feat: 新增剪切与重命名的api

This commit is contained in:
539943419 committed 2024-08-16 00:40:16 +08:00
1 parent e0febdfa07
commit 59dbbb288c
7 files changed
+83 -12

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
import { api, staticPath } from "../config.js";
import path from "path";
import useFsOprateEventCenter from "../hooks/useFsOprateEventCenter.js";
import fs from "fs";
import express from "express";
const fsOprateEventCenter = useFsOprateEventCenter();
function cutPath(targetPath, newPath) {
return new Promise((resolve, reject) => {
fs.stat(targetPath, (err, stats) => {
if (err) {
console.log(err);
return reject(err);
}
fs.rename(targetPath, newPath, err => {
if (err) return reject(err);
resolve();
});
});
});
}
export default function useCutApi(app) {
app.post(api.cut, express.json(), (req, res) => {
const decodedPath = decodeURIComponent(req.path).substring(api.cut.length - 1);
const targetPath = path.join(staticPath, decodedPath);
const newPath = path.join(staticPath, req.body.newPath, path.basename(targetPath));
const eventId = fsOprateEventCenter.push(cutPath(targetPath, newPath));
res.send({ eventId });
});
}
+4 -10
View File
@@ -10,27 +10,21 @@ function deletePath(targetPath) {
fs.stat(targetPath, (err, stats) => {
if (err) {
console.log(err)
return reject(err); // 如果获取状态失败,返回错误
return reject(err);
}
if (stats.isFile()) {
// 如果是文件,直接删除
fs.rm(targetPath, { recursive: true }, (err) => {
if (err) return reject(err);
resolve(); // 删除成功
resolve();
});
// console.log('delete file')
} else if (stats.isDirectory()) {
// 如果是文件夹,递归删除
fs.rm(targetPath, { recursive: true }, (err) => {
if (err) return reject(err);
resolve(); // 删除成功
resolve();
});
// console.log('delete directory')
} else {
// console.log('unknow file')
// 其他类型(如符号链接等),可以根据需要处理
reject('unknow file'); // 这里选择不处理其他类型
reject('unknow file');
}
});
});
+4
View File
@@ -3,6 +3,10 @@ import useFsOprateEventCenter from "../hooks/useFsOprateEventCenter.js";
const fsOprateEventCenter = useFsOprateEventCenter();
/**
* 获取一个文件操作事件的结果
* @returns {any}
*/
export default function useQueryApi(app) {
app.get(api.query, (req, res) => {
const id = req.query.id;
+34
View File
@@ -0,0 +1,34 @@
import { api, staticPath } from "../config.js";
import path from "path";
import useFsOprateEventCenter from "../hooks/useFsOprateEventCenter.js";
import fs from "fs";
import express from "express";
const fsOprateEventCenter = useFsOprateEventCenter();
function renamePath(targetPath, newName) {
return new Promise((resolve, reject) => {
fs.stat(targetPath, (err, stats) => {
if (err) {
console.log(err);
return reject(err);
}
const newTargetPath = path.join(path.dirname(targetPath), newName);
fs.rename(targetPath, newTargetPath, err => {
if (err) return reject(err);
resolve();
});
});
});
}
export default function useRenameApi(app) {
app.post(api.rename, express.json(), (req, res) => {
const decodedPath = decodeURIComponent(req.path).substring(api.rename.length - 1);
const targetPath = path.join(staticPath, decodedPath);
const newName = req.body.newName;
const eventId = fsOprateEventCenter.push(renamePath(targetPath, newName));
res.send({ eventId });
});
}