潘志宝
4 天以前 e14de70a3c4b393498d3e95717b19240c4426c22
提交 | 用户 | 时间
e7c126 1 package com.iailab.module.infra.framework.file.core.client.sftp;
H 2
3 import cn.hutool.core.io.FileUtil;
4 import cn.hutool.extra.ssh.Sftp;
5 import com.iailab.framework.common.util.io.FileUtils;
6 import com.iailab.module.infra.framework.file.core.client.AbstractFileClient;
7
8 import java.io.File;
9
10 /**
11  * Sftp 文件客户端
12  *
13  * @author iailab
14  */
15 public class SftpFileClient extends AbstractFileClient<SftpFileClientConfig> {
16
17     private Sftp sftp;
18
19     public SftpFileClient(Long id, SftpFileClientConfig config) {
20         super(id, config);
21     }
22
23     @Override
24     protected void doInit() {
25         // 补全风格。例如说 Linux 是 /,Windows 是 \
26         if (!config.getBasePath().endsWith(File.separator)) {
27             config.setBasePath(config.getBasePath() + File.separator);
28         }
29         // 初始化 Ftp 对象
30         this.sftp = new Sftp(config.getHost(), config.getPort(), config.getUsername(), config.getPassword());
31     }
32
33     @Override
34     public String upload(byte[] content, String path, String type) {
35         // 执行写入
36         String filePath = getFilePath(path);
37         File file = FileUtils.createTempFile(content);
38         sftp.upload(filePath, file);
39         // 拼接返回路径
40         return super.formatFileUrl(config.getDomain(), path);
41     }
42
43     @Override
44     public void delete(String path) {
45         String filePath = getFilePath(path);
46         sftp.delFile(filePath);
47     }
48
49     @Override
50     public byte[] getContent(String path) {
51         String filePath = getFilePath(path);
52         File destFile = FileUtils.createTempFile();
53         sftp.download(filePath, destFile);
54         return FileUtil.readBytes(destFile);
55     }
56
57     private String getFilePath(String path) {
58         return config.getBasePath() + path;
59     }
60
61 }