java web FTPClient实现上传文件到指定服务器

 更新时间:2018年06月10日 14:03:08   作者:hdafgdax  
这篇文章主要为大家详细介绍了java web FTPClient实现上传文件到指定服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

FPClient 实现上传文件到指定服务器,供大家参考,具体内容如下

调用

 FileInputStream in=new FileInputStream(new File(fileUrl));  
 moveFile("10.3.3.**", 21, "username", "password", path, filename, in);

方法

/** 
  * Description: 向FTP服务器上传文件 
  * @param url FTP服务器hostname 
  * @param port FTP服务器端口 
  * @param username FTP登录账号 
  * @param password FTP登录密码 
  * @param path FTP服务器保存目录 
  * @param filename 上传到FTP服务器上的文件名 
  * @param input 输入流 
  * @return 成功返回true,否则返回false 
  */ 

public static boolean moveFile(String url,int port,String username, String password, String path, String filename, InputStream input) { 
  boolean success = false; 
  FTPClient ftp = new FTPClient(); 
  try { 
   int reply; 
   ftp.connect(url, port);//连接FTP服务器 
   //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 
   ftp.login(username, password);//登录 
   reply = ftp.getReplyCode(); 
   if (!FTPReply.isPositiveCompletion(reply)) { 
    ftp.disconnect(); 
    return success; 
   } 
   //创建路径
   try{
    ftp.makeDirectory(path);
   }catch(Exception e){
       }
   ftp.enterLocalPassiveMode();
   ftp.changeWorkingDirectory(path); 
   boolean f= ftp.storeFile(filename, input);   
   logger.error(f);
   input.close(); 
   ftp.logout(); 
   success = true; 
  } catch (IOException e) { 
   e.printStackTrace(); 
  } finally { 
   if (ftp.isConnected()) { 
    try { 
     ftp.disconnect(); 
    } catch (IOException ioe) { 
    } 
   } 
  } 
  return success; }

一些细节

FileInputStream.available()返回的实际可读字节数,也就是总大小。

FTPClient.storeFile()方法时,就停止在那里,什么反应都没有,出现假死状态。
解决方法: 调用FTPClient.enterLocalPassiveMode()
原 理: 因为ftp server可能每次开启不同的端口来传输数据,但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞

FTP默认端口为21 SSH为22 实际传输端口为20

查看指定端口,例21
netstat -na|grep 21(端口号)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java三种获取redis的连接及redis_String类型演示(适合新手)

    Java三种获取redis的连接及redis_String类型演示(适合新手)

    这篇文章主要介绍了Java三种获取redis的连接及redis_String类型演示(适合新手),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java注解处理器简单实例

    Java注解处理器简单实例

    这篇文章主要介绍了Java注解处理器简单实例,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 你所不知道的Spring的@Autowired实现细节分析

    你所不知道的Spring的@Autowired实现细节分析

    这篇文章主要介绍了你所不知道的Spring的@Autowired实现细节分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java并发编程之阻塞队列详解

    Java并发编程之阻塞队列详解

    这篇文章主要为大家详细介绍了Java并发编程之阻塞队列,什么是阻塞队列?主要的阻塞队列及其方法介绍,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • java读取excel文件并复制(copy)文件到指定目录示例

    java读取excel文件并复制(copy)文件到指定目录示例

    这篇文章主要介绍了java读取excel文件并复制文件到指定目录示例,需要的朋友可以参考下
    2014-02-02
  • Springboot如何通过流返回文件

    Springboot如何通过流返回文件

    这篇文章主要介绍了Springboot如何通过流返回文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java实现简易俄罗斯方块

    Java实现简易俄罗斯方块

    这篇文章主要为大家详细介绍了Java实现简易俄罗斯方块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • Struts2配置文件中使用通配符的方法(三种形式)

    Struts2配置文件中使用通配符的方法(三种形式)

    Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。这篇文章主要介绍了Struts2配置文件中使用通配符的相关知识,需要的朋友可以参考下
    2019-11-11
  • 如何用Springboot快速整合shiro安全框架

    如何用Springboot快速整合shiro安全框架

    这篇文章主要介绍了如何用SpringBoot快速整合shiro安全框架,shiro原名Apache Shiro 是一个Java 的安全(权限)框架。Shiro 可以非常容易的开发出足够好的应用,感兴趣的同学可以参考阅读
    2023-04-04
  • Lombok 的@StandardException注解解析

    Lombok 的@StandardException注解解析

    @StandardException 是一个实验性的注解,添加到 Project Lombok 的 v__1.18.22 版本中,在本教程中,我们将使用 Lombok 的 @StandardException 注解自动生成异常类型类的构造函数,需要的朋友可以参考下
    2023-05-05

最新评论