SpringBoot+Hutool的SFTP文件上传到服务器

打印 上一主题 下一主题

主题 829|帖子 829|积分 2487

准备好Liunx服务器(假造机)

   我这里使用VMware 假造机
假造机设置可参考 https://blog.csdn.net/user_admin_god/article/details/143085598?spm=1001.2014.3001.5501
  

Maven依靠加入Hutool-all


   SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。
SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式。SFTP是使用加密传输认证信息和数据,以是,使用SFTP是非常安全的。
但是,由于这种传输方式使用了加密/解密技术,以是传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP取代FTP。
  #使用
  1. <dependency>
  2.             <groupId>cn.hutool</groupId>
  3.             <artifactId>hutool-all</artifactId>
  4.             <version>5.8.26</version>
  5.         </dependency>
  6.         <dependency>
  7.             <groupId>com.jcraft</groupId>
  8.             <artifactId>jsch</artifactId>
  9.             <version>0.1.53</version>
  10.         </dependency>
  11.         <dependency>
  12.             <groupId>commons-net</groupId>
  13.             <artifactId>commons-net</artifactId>
  14.             <version>3.11.1</version>
  15.         </dependency>
  16.         <dependency>
复制代码
文件通过STFP写入到服务器/tmp/upload目录

   web项目
文件上传接口吸取前端传入的文件
文件写入到服务所在装备目录
然后SFTP工具读取文件写到服务器对应目录
  1. @RestController
  2. @RequestMapping("sftp")
  3. @Tag(name = "sftp")
  4. @Slf4j
  5. public class SFTPController {
  6.     @PostMapping("/save")
  7.     public Resp<String> insertBatch(@RequestPart("file") MultipartFile file, HttpServletRequest request) {
  8.         String originalFilename = file.getOriginalFilename();
  9.         String filePathLocal = "/temp/upload/" + originalFilename;
  10.         try {
  11.             String os = System.getProperty("os.name");
  12.             if (os.toLowerCase().startsWith("win")) {
  13.                 filePathLocal = "G:/temp/upload/" + originalFilename;
  14.             }
  15.             // 文件附件保存到本地
  16.             InputStream inputStream = file.getInputStream();
  17.             FileCopyUtils.copy(inputStream, new FileOutputStream(filePathLocal));
  18.             // 连接SFTP
  19.             Sftp sftp = JschUtil.createSftp("192.168.11.44", 22, "root", "123456");
  20.             //进入远程目录
  21.             String remotePath = "/tmp/upload";
  22.             if (!sftp.exist(remotePath)) {
  23.                 sftp.mkdir(remotePath);
  24.             }
  25.             sftp.cd(remotePath);
  26.             //上传本地文件
  27.             sftp.put(filePathLocal, remotePath);
  28.             sftp.close();
  29.         } catch (Exception e) {
  30.             log.error(e.getMessage(), e);
  31.         }
  32.         return Resp.Ok();
  33.     }
  34. }
复制代码
通过Knife4j-v4.1.0接口测试


然后去服务器查看对应目录是否写上去了


Hutool的SFTP文件下载

  1.   @PostMapping("/get")
  2.     public Resp<String> insertBatch(@RequestParam("name") String name, HttpServletRequest request) {
  3.         String remotePath = "/tmp/upload/" + name;
  4.         // 本地存放文件地址
  5.         String filePathLocal = "G:/temp/upload/" + name;
  6.         try {
  7.             // 连接SFTP
  8.             Sftp sftp = JschUtil.createSftp("192.168.11.44", 22, "root", "123456");
  9.             //获取远程服务器文件放入本地文件
  10.             sftp.get(remotePath, filePathLocal);
  11.             sftp.close();
  12.         } catch (Exception e) {
  13.             log.error(e.getMessage(), e);
  14.         }
  15.         return Resp.Ok();
  16.     }
复制代码
Knife4j-v4.1.0接口测试 SFTP获取文件



Ending


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表