天天看点

Hutool 使用 sftp 报错 Packet corrupt 问题

作者:魔法智慧的小李

最近使用hutool 中的sftp方法 上传文件遇到了:com.jcraft.jsch.JSchException: Packet corrupt 这个报错,刚开始以为是提供sftp服务器报错问题导致,后来发现事情没有那么简单,随即开始了排查。

Hutool 使用 sftp 报错 Packet corrupt 问题

修改前代码

经过查询资料发现hutool使用sftp连接服务器会创建一个session会进行使用,如果不进行关闭就会导致超时,到了指定时间就会无法上传文件,而且在循环中使用同样如此,要么就是重启项目,但是总不能频繁的重启项目对不对,所以还是要找方法解决掉。

Hutool 使用 sftp 报错 Packet corrupt 问题

init 方法中获取session代码

检查代码后发现没有对创建的sftp进行关闭便增加了sftp文件上传完成后,关闭sftp连接,并且为了避免session不及时关闭导致超时问题,我们自己传入一个session对象在通过回话进行操作,避免因session导致报错,并且也不推荐使用 new sftp(ip,port,user,pass) 的方式创建sftp的方式随即修改为一下代码,这样session随用随关,问题解决。

Hutool 使用 sftp 报错 Packet corrupt 问题

修改后代码

最后大家平时一定要注意,sftp连接的及时关闭不然极其容易引起问题导致报错!感谢观看。