博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用FTPClient进行文件服务器内文件的上传和下载
阅读量:6977 次
发布时间:2019-06-27

本文共 3122 字,大约阅读时间需要 10 分钟。

我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手。我在项目开发的过程中主要用到了文件的上传和下载功能,下面将我开发的代码贴出来供大家学习:

文件上传到文件服务器:在该部分内我遇到的主要问题上文件名乱码,word文档内容乱码,解决办法在代码中已经注释了,希望可以帮助到大家。

 

1 /** 2 * 上传部分代码如下: 3 * @param url:文件服务器主机地址 4 * @param port:文件服务器端口号 5 * @param username:用户名 6 * @param password:密码 7 * @param path:文件要保存的路径 8 * @param filename:文件名字 9 * @param input:文件输入流,即从本地服务器读取文件的IO输入流10 * @return11 */12 public static boolean uploadToFTPServer(String url,int port,String username,String password,String path,String filename,InputStream input)13 { 14 boolean success = false; //判断文件是否上传成功 15 FTPClient ftp = new FTPClient(); //创建一个客户端实例 16 try { 17 int reply; 18 ftp.connect(url, port);//连接FTP服务器 19 //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 20 ftp.login(username, password);//登录 21 reply = ftp.getReplyCode(); //获得返回的代码,来判断连接状态 22 23 if (!FTPReply.isPositiveCompletion(reply)) { 24 ftp.disconnect(); 25 return success; 26 } 27 // ftp.makeDirectory("bbb");//创建文件目录28 ftp.changeWorkingDirectory(path);29 ftp.setFileType(FTP.BINARY_FILE_TYPE);//设置文件以二进制的形式上传,防止文件内容乱码出现30 //设置文件名字的编码格式为iso-8859-1,因为FTP上传的时候默认编码为iso-8859-1,解决文件名字乱码的问题31 filename = new String(filename.getBytes("GBK"),"iso-8859-1");32 ftp.storeFile(filename, input); //开始上传文件 33 input.close();//关闭文件输入流34 ftp.logout();//断开和ftp服务器之间的连接35 success = true; 36 } catch (IOException e) { 37 e.printStackTrace(); 38 } finally { 39 if (ftp.isConnected()) { 40 try { 41 ftp.disconnect(); 42 } 43 catch (IOException ioe) { 44 } 45 } 46 } 47 return success; 48 49 }

从文件服务器下载文件:

 

1     public static void downloadFromFileServer(String url,int port,String username,String password,String path,HttpServletRequest request, HttpServletResponse response) throws SocketException, IOException 2     { 3         //boolean success = false;  //判断文件是否上传成功  4         FTPClient ftp = new FTPClient();  //创建一个客户端实例  5          6         ftp.connect(url, port);//连接FTP服务器     7         //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器     8         ftp.login(username, password);//登录     9         int reply = ftp.getReplyCode(); //获得返回的代码,来判断连接状态  10         ftp.changeWorkingDirectory("bbb");//转移到FTP服务器目录 11         if (!FTPReply.isPositiveCompletion(reply)) {   12             ftp.disconnect();   13         }   14         //File localFile = new File(request.getServletContext().getRealPath("/upload/")+"12345678.doc");    15         //OutputStream is = new FileOutputStream(localFile);     16        // ftp.retrieveFile("1234.doc", is);  17         18         19         FTPFile[] fs = ftp.listFiles(); 20 21         for(FTPFile ff:fs){ 22             if(ff.getName().equals("abc.txt")){
//如果找到abc.txt则进行下载 ,可以自己设置要下载的文件名称23 //设置要下载到的目录24 File localFile = new File(request.getServletContext().getRealPath("/upload")+"/12345678.doc"); 25 //得到输出流26 OutputStream is = new FileOutputStream(localFile); 27 ftp.retrieveFile(ff.getName(), is); //开始下载文件28 is.close(); 29 } 30 }31 32 ftp.logout();33 }34 }

以上即为我在使用FTPClient进行文件的上传和下载部分的代码,记录下来以便我日后学习。

 

转载地址:http://bhupl.baihongyu.com/

你可能感兴趣的文章
几个定制 iTerm2 的 tip
查看>>
杨老师课堂_Java核心技术下之控制台模拟记事本案例 ...
查看>>
好程序员分享24个canvas基础知识小结
查看>>
大数据处理也要安全--关于MaxCompute的安全科普
查看>>
Django使用数据库(Mariadb/Mysql)
查看>>
广东“基因编辑婴儿事件”调查组:将对贺建奎依法依规严肃处理
查看>>
在macos上基于python2.7安装PyQt5
查看>>
69亿美元英伟达史上最大收购!这家基金又赢了
查看>>
阿里云双12服务器和阿里云双12数据库活动又开始了
查看>>
百度成立小度蓝牙联盟,DMA+小度App打造蓝牙语音风口
查看>>
第二十章:异步和文件I/O.(十三)
查看>>
第四范式完成C轮融资,金额超10亿元
查看>>
Java图形化:布局方式
查看>>
python 帮助文档、自我解释
查看>>
helm安装配置
查看>>
离线安装k8s 1.9.0
查看>>
my项目的总结2015.8.26编
查看>>
Linux 基金会宣布红队项目,致力于孵化开源安全工具
查看>>
索尼发布无人机相机专利,支持眼部对焦
查看>>
js字符串方法
查看>>