From 4f684dabcb2dba92b85f096bb32c8ab5707e764f Mon Sep 17 00:00:00 2001 From: wxyShine Date: Fri, 8 Apr 2022 17:02:32 +0800 Subject: [PATCH 1/2] =?UTF-8?q?:tada:SSH=E6=96=87=E4=BB=B6=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=99=A8=E4=B8=AD=E5=8A=A0=E5=85=A5=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E5=92=8C=E6=96=87=E4=BB=B6=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ssh/SshFileController.java | 30 +++++- web-vue/src/api/ssh.js | 14 +++ web-vue/src/pages/ssh/ssh-file.vue | 98 ++++++++++++++++--- 3 files changed, 126 insertions(+), 16 deletions(-) diff --git a/modules/server/src/main/java/io/jpom/controller/ssh/SshFileController.java b/modules/server/src/main/java/io/jpom/controller/ssh/SshFileController.java index 09fc3117b..41840c875 100644 --- a/modules/server/src/main/java/io/jpom/controller/ssh/SshFileController.java +++ b/modules/server/src/main/java/io/jpom/controller/ssh/SshFileController.java @@ -452,7 +452,7 @@ public class SshFileController extends BaseServerController { File savePath = FileUtil.file(tempPath, "ssh", sshModel.getId()); multipart.setSavePath(FileUtil.getAbsolutePath(savePath)); multipart.addFieldName("file") - .setUseOriginalFilename(true); + .setUseOriginalFilename(true); // if (Convert.toBool(unzip, false)) { multipart.setFileExt(StringUtil.PACKAGE_EXT); @@ -489,4 +489,32 @@ public class SshFileController extends BaseServerController { return JsonMessage.getString(200, "上传成功"); } + @RequestMapping(value = "new_file_folder.json", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public String newFileFolder(String id, String path, String name, String unFolder) { + SshModel sshModel = sshService.getByKey(id, false); + Assert.notNull(sshModel, "ssh error"); + Session session = SshService.getSessionByModel(sshModel); + try (Sftp sftp = new Sftp(session, sshModel.getCharsetT())) { + // 验证合法性,防止越权 + FileUtil.file(path, name); + String remotePath = FileUtil.normalize(path + StrUtil.SLASH + name); + StringBuilder command = new StringBuilder(); + if (Convert.toBool(unFolder, false)) { + // 文件 + command.append("touch ").append(remotePath); + } else { + // 目录 + command.append("mkdir ").append(remotePath); + if (sftp.mkdir(remotePath)) { + } + } + String result = sshService.exec(sshModel, String.valueOf(command)); + return JsonMessage.getString(200, "操作成功"); + + } catch (IOException e) { + e.printStackTrace(); + } + return JsonMessage.getString(400, "操作失败"); + } + } diff --git a/web-vue/src/api/ssh.js b/web-vue/src/api/ssh.js index 99c803ed2..2feddbc79 100644 --- a/web-vue/src/api/ssh.js +++ b/web-vue/src/api/ssh.js @@ -225,3 +225,17 @@ export function updateFileData(params) { data: params, }); } + +/** + * 新增目录 或文件 + * @param params + * @returns {id, path, name,unFolder} params x + */ +export function newFileFolder(params) { + return axios({ + url: "/node/ssh/new_file_folder.json", + method: "post", + data: params, + }); +} + diff --git a/web-vue/src/pages/ssh/ssh-file.vue b/web-vue/src/pages/ssh/ssh-file.vue index d51f1e854..316af7974 100644 --- a/web-vue/src/pages/ssh/ssh-file.vue +++ b/web-vue/src/pages/ssh/ssh-file.vue @@ -3,8 +3,8 @@ - - + + @@ -14,6 +14,23 @@ 上传文件 上传压缩文件(自动解压) + + 新建 + + + + + 新建目录 + + + + + + 新建空白文件 + + + + 刷新 删除 当前目录:{{ this.nowPath }} @@ -32,7 +49,7 @@