当前位置: 首页 > news >正文

SFTP工具

SFTP工具

  • 工具类
  • 配置类
  • 调用

工具类


@Slf4j
@Component
public class SFTPUtils {@Resourceprivate SftpConfig sftpConfig;Session session = null;Channel channel = null;/*** 网络图片url** @param fileUrl* @throws JSchException*/public String uploadFileSFTP(String fileUrl) {if (StringUtils.isBlank(fileUrl)) {throw new RuntimeException("图片路径不能为空");}String[] split = fileUrl.split("=");String fileName = split[split.length - 1];URL url = null;try {url = new URL(fileUrl);} catch (MalformedURLException e) {e.printStackTrace();}ChannelSftp chSftp = null;try {String dst = sftpConfig.getVpsUrl() + LocalDate.now().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)) + "/"; // 目标文件名//登录sftpchSftp = this.getChannel(60000);//创建文件夹this.createDir(dst, chSftp);chSftp.put(url.openStream(), dst + fileName, ChannelSftp.OVERWRITE); // 代码段2(常用)return dst + fileName;} catch (Exception e) {e.printStackTrace();log.error(e.getMessage());} finally {if (null != chSftp) {chSftp.quit();}if (channel != null) {channel.disconnect();}if (session != null) {session.disconnect();}}return null;}/*** 上传SFTP** @param inputStream 文件流* @throws JSchException*/public String uploadFileSFTP(InputStream inputStream) {ChannelSftp chSftp = null;try {String dst = sftpConfig.getVpsUrl() + LocalDate.now().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)) + "/"; // 目标文件名//登录sftpchSftp = this.getChannel(60000);//创建文件夹this.createDir(dst, chSftp);String fileUrl = dst + System.currentTimeMillis() + ".png";chSftp.put(inputStream, fileUrl, ChannelSftp.OVERWRITE); // 代码段2(常用)return fileUrl;} catch (Exception e) {e.printStackTrace();log.error(e.getMessage());} finally {if (null != chSftp) {chSftp.quit();}if (channel != null) {channel.disconnect();}if (session != null) {session.disconnect();}}return null;}//登录sftppublic ChannelSftp getChannel(int timeout) throws JSchException {//创建JSch对象JSch jsch = new JSch();//根据用户名,主机ip,端口获取一个Session对象session = jsch.getSession(sftpConfig.getFtpUserName(), sftpConfig.getFtpHost(), sftpConfig.getPortL());session.setPassword(sftpConfig.getFtpPassword());Properties config = new Properties();config.put("StrictHostKeyChecking", "no");session.setConfig(config); // 为Session对象设置propertiessession.setTimeout(timeout); // 设置timeout时间session.connect(); // 通过Session建立链接channel = session.openChannel("sftp"); // 打开SFTP通道channel.connect(); // 建立SFTP通道的连接return (ChannelSftp) channel;}//创建目录private void createDir(String createpath, ChannelSftp sftp) {try {sftp.mkdir(createpath);} catch (SftpException e) {log.error(createpath + "文件夹已存在");}}}

配置类

yml文件为
test:sftp:ftpHost: 127.0.0.1portL: 22ftpUserName: rootftpPassword: rootvpsUrl: /data/test/img	@Data
@Configuration
@ConfigurationProperties(prefix = "test.sftp")
public class SftpConfig {/*服务器IP*/private String ftpHost;/*服务器端口*/private Integer portL;/*服务器-用户名称*/private String ftpUserName;/*服务器用户密码*/private String ftpPassword;/*上传文件位置*/private String vpsUrl;}

调用

 @Resourceprivate SFTPUtils sftpUtils;//这里两个方法分别可以传 网络图片的url地址或者流
String fqFm = sftpUtils.uploadFileSFTP('图片url');
http://www.lryc.cn/news/371591.html

相关文章:

  • 服务器数据恢复—vxfs文件系统元数据被破坏的数据恢复案例
  • 【SCAU数据挖掘】数据挖掘期末总复习题库简答题及解析——上
  • 云时代的Java:在云环境中实施Java的最佳实践
  • STL - 常用算法
  • Qt | QTextStream 类(文本流)
  • Python学习笔记7:入门知识(七)
  • 如何翻译和本地化游戏?翻译访谈
  • [C++] 从零实现一个ping服务
  • 2024网络安全学习路线 非常详细 推荐学习
  • STM32F103ZET6_HAL_CAN
  • javaWeb项目-ssm+vue网上租车系统功能介绍
  • Go模板页面浏览器显示HTML源码问题
  • 弃用Docker Desktop:在WSL2中玩转Docker之Docker Engine 部署与WSL入门
  • Mac下载了docker,在终端使用docker命令时用不了
  • Spring Security——基于MyBatis
  • Qt——升级系列(Level Four):控件概述、QWidget 核心属性、按钮类控件
  • 品质卓越为你打造App UI 风格
  • ei期刊和sci期刊的区别
  • 从零手写实现 nginx-20-placeholder 占位符 $
  • leetcode290:单词规律
  • IDEA 2022
  • Vue TypeScript 实战:掌握静态类型编程
  • Hudi extraMetadata 研究总结
  • Vue31-自定义指令:总结
  • Windows环境如何使用Flutter Version Manager (fvm)
  • 优化Elasticsearch搜索性能:查询调优与索引设计
  • STM32-17-DAC
  • 一杯咖啡的艺术 | 如何利用数字孪生技术做出完美的意式浓缩咖啡?
  • 使用QT制作QQ登录界面
  • 代码随想录训练营第七天 344反转字符串 541反转字符串II 替换数字