java将图片上传到ftp

    
       //创建ftpClient对象  
       FTPClient ftpClient= new FTPClient();  
       //创建ftp链接,默认是21端口  
       ftpClient.connect("139.199.90.60",21);  
         
       //登录ftp服务器,使用用户名和密码  
       ftpClient.login("ftpuser", "chen429736");  
         
       //上传文件  
       //读取本地文件 
 
       FileInputStream inputStream=new FileInputStream(new File("F://Cache//1.png"));  

       ftpClient.setFileType(FTP.BINARY_FILE_TYPE);   

               //加了这句解决

       ftpClient.enterLocalPassiveMode(); 
       ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 
       ftpClient.setBufferSize(65535); 
       //设置上传的路径  
       ftpClient.changeWorkingDirectory("/home/ftpuser/www/images");  
         
       //修改上传格式  
     
       //第一个参数:服务器端文档名  
       //第二个参数,上传文档的inputStream  
       ftpClient.storeFile("rest.png", inputStream);  
       //关闭链接  

       ftpClient.logout();  


//java.net.SocketTimeoutException: Read timed out


调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,但是在linux上,由于安全限制,可能某些端口没有开启,所以就出现阻塞。

可是有一件事特别奇怪,就是同事在登录正式环境,上传文件,报错java.lang.NullPointerException ,可是在本地代码运行过程中,根本不会出现这个问题,但是当解决了本地上传问题后,这个问题就复现了出来,你猜是什么,原来是密码输入不正确!哎。。。。



 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值