• 使用FTPClient进行文件服务器内文件的上传和下载


    我用的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 * @return
    11 */
    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进行文件的上传和下载部分的代码,记录下来以便我日后学习。

  • 相关阅读:
    旋转加载loading和点点加载loadingdemo
    css 点点加载demo
    gulp——myself配置
    AngularJS官网seed目录结构
    CSS content换行技术实现字符animation loading效果
    gulp入门与一些基本设置
    css 图标 旋转中
    【图文教程】WebStorm下使用Github下载以及上传代码
    gulp-uglify的使用
    面试题 ——— 二维数组的查找
  • 原文地址:https://www.cnblogs.com/huajiezh/p/5275760.html
Copyright © 2020-2023  润新知