apache ftpClient 文件上传

最近做ftp上传遇到问题,最终解决,现在分享给大家。

这里有四点:

1、将字符串转换成输入流

Java代码   收藏代码
  1. String s = "this is my test string 中国";  
  2. //将字符串转换成输入流  
  3. ByteArrayInputStream fis = new ByteArrayInputStream(s.getBytes());  

 2、设置编码

Java代码   收藏代码
  1. ftp.setControlEncoding("GBK");  

 3、设置为被动模式

Java代码   收藏代码
  1. ftp.enterLocalPassiveMode();  

 4、上传和下载文件名称编码,当文件名为中文时,上传下载可能需要编码

Java代码   收藏代码
  1. //上传文件名称  
  2. boolean fb = ftp.storeFile(new String("test中文.csv".getBytes("GBK"),"iso8859-1"), fis);  

 

最终测试代码如下:

Java代码   收藏代码
  1. package ftpTest;  
  2.   
  3. import java.io.ByteArrayInputStream;  
  4. import java.io.IOException;  
  5. import org.apache.commons.net.ftp.FTPClient;  
  6. public class ApacheFtpTest {  
  7.     /** 
  8.      * @param args 
  9.      * @throws IOException 
  10.      */  
  11.     public static void main(String[] args) throws IOException {  
  12.         String s = "this is my test string 中国";  
  13.         //将字符串转换成输入流  
  14.         ByteArrayInputStream fis = new ByteArrayInputStream(s.getBytes());  
  15.         FTPClient ftp = new FTPClient();  
  16.         //host,端口  
  17.         ftp.connect("127.0.0.1"21);  
  18.         //必须设置,上传非iisc文件,如果不设置默认是iisc码格式传输,导致文件坏死  
  19.         ftp.setFileType(FTPClient.BINARY_FILE_TYPE);  
  20.         //如果遍历文件名乱码,请设置为GBK,或者你需要的编码  
  21.         ftp.setControlEncoding("GBK");  
  22.         //超时时间必须设置,方式长时间连接没响应  
  23.         ftp.setControlKeepAliveReplyTimeout(15000);  
  24.         ftp.setConnectTimeout(15000);  
  25.         ftp.setControlKeepAliveTimeout(15000);  
  26.         //设置被动模式,在很多情况下由于防火墙等原因,主动模式不支持。  
  27.         ftp.enterLocalPassiveMode();  
  28.         //帐户密码  
  29.         ftp.login("帐户""密码");  
  30.         System.out.println("login success");  
  31.         //服务器路径  
  32.         ftp.changeWorkingDirectory("/");  
  33.         //上传文件名称  
  34.         ftp.storeFile("test.txt", fis);  
  35.                 //上传文件名称  
  36.         //boolean fb = ftp.storeFile(new String("test中文.csv".getBytes("GBK"),"iso8859-1"), fis);  
  37.         ftp.logout();  
  38.     }  
  39.   
  40. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值