当前位置:   article > 正文

SFTP文件下载(由于SFTP有权限设置,本地ip又不固定,所以为测试服务器IP开通权限,把文件下载到测试服务器,再用流读到本地)_sftp下载

sftp下载

1.工具类

  1. import java.util.Properties;
  2. import org.apache.log4j.Logger;
  3. import com.jcraft.jsch.Channel;
  4. import com.jcraft.jsch.ChannelSftp;
  5. import com.jcraft.jsch.JSch;
  6. import com.jcraft.jsch.JSchException;
  7. import com.jcraft.jsch.Session;
  8. public class SFTPUtils {
  9.   private static Logger log = Logger.getLogger(SFTPUtils.class.getName());
  10.   /*
  11. * 从SFTP服务器下载文件
  12. * @param ftpHost SFTP IP地址
  13. * @param ftpUserName SFTP 用户名
  14. * @param ftpPassword SFTP用户名密码
  15. * @param ftpPort SFTP端口
  16. * @param ftpPath SFTP服务器中文件所在路径 格式: ftptest/aa
  17. * @param localPath 下载到本地的位置 格式:H:/download
  18. * @param fileName 文件名称
  19. */
  20. public static void downloadSftpFile(String ftpHost, String ftpUserName,
  21. String ftpPassword, int ftpPort, String ftpPath, String localPath,
  22. String fileName) throws JSchException {
  23. Session session = null;
  24. Channel channel = null;
  25.  
  26. JSch jsch = new JSch();
  27. session = jsch.getSession(ftpUserName, ftpHost, ftpPort);
  28. session.setPassword(ftpPassword);
  29. session.setTimeout(100000);
  30. Properties config = new Properties();
  31. config.put("StrictHostKeyChecking", "no");
  32. session.setConfig(config);
  33. session.connect();
  34.  
  35. channel = session.openChannel("sftp");
  36. channel.connect();
  37. ChannelSftp chSftp = (ChannelSftp) channel;
  38.  
  39.  
  40. try {
  41. chSftp.get(ftpPath, localPath);
  42. } catch (Exception e) {
  43. e.printStackTrace();
  44. log.info("download error.");
  45. } finally {
  46. chSftp.quit();
  47. channel.disconnect();
  48. session.disconnect();
  49. }
  50. }
  51. }

2、下载用例

  1. /**
  2. * 把SFTP文件下载到Linux服务的/opt/enloan/目录,然后在使用流读取
  3. * @param filename 文件名
  4. * @param path 源文件路径
  5. * @param response
  6. * @return
  7. *Constant.FILEPATH  为Linux服务的目录为:/opt/enloan/
  8. */
  9. @RequestMapping("proofRecord/download")
  10. public void proofRecordDown(String fileName, String path,HttpServletResponse response) {
  11. try {
  12. SFTPUtils.downloadSftpFile("218.76.54.205", "sxhuaan", "密码", 20022, path, Constant.FILEPATH, fileName);
  13. response.setCharacterEncoding("utf-8");
  14. response.setContentType("multipart/form-data");
  15. response.setHeader("Content-Disposition",
  16. "attachment;fileName=" + java.net.URLEncoder.encode(fileName, "utf-8"));
  17. File file = new File(Constant.FILEPATH+fileName);
  18. InputStream inputStream = new FileInputStream(file);
  19. OutputStream os = response.getOutputStream();
  20. byte[] b = new byte[2048];
  21. int length;
  22. while ((length = inputStream.read(b)) > 0) {
  23. os.write(b, 0, length);
  24. }
  25. os.close();
  26. inputStream.close();
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/866696
推荐阅读
相关标签
  

闽ICP备14008679号