JAVA ftp服务器上传文件

    最近在做一个同步数据的项目时遇到了附件要保存在单独的文件服务器的状况。而文件服务器采用的是ftp服务器,我了解到除了ftp服务器外还可以创建共享目录来保存文件。

那使用ftp保存文件的具体方法就是:


package control.util;
import java.io.File;    
import java.io.FileInputStream;    
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;


import org.apache.commons.net.ftp.FTPClient;    
import org.apache.commons.net.ftp.FTPReply;    

public class copyFile {


private  FTPClient ftp;      
   /**  
    *   
    * @param path 上传到ftp服务器哪个路径下     
    * @param addr 地址  
    * @param port 端口号  
    * @param username 用户名  
    * @param password 密码  
    * @return  
    * @throws Exception  
    */    
   private  boolean connect(String path,String addr,int port,String username,String password) throws Exception {      
       boolean result = false;      
       ftp = new FTPClient();      
       int reply;      
       ftp.connect(addr,port);      
       ftp.login(username,password);      
       ftp.setFileType(FTPClient.BINARY_FILE_TYPE);      
       reply = ftp.getReplyCode();      
       if (!FTPReply.isPositiveCompletion(reply)) {      
           ftp.disconnect();      
           return result;      
       }      
       ftp.changeWorkingDirectory(path);
       Date dt = new Date();  
   SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");  
   String newFilePath = sdf.format(dt);
   if (!ftp.changeWorkingDirectory(newFilePath)) {
    this.createDir(newFilePath);
  }     
   ftp.changeWorkingDirectory("/"+newFilePath);
       result = true;   
       return result;      
   }      
   /**  
    *   
    * @param file 上传的文件或文件夹  
    * @throws Exception  
    */    
   private void upload(File file) throws Exception{      
       if(file.isDirectory()){           
           ftp.makeDirectory(file.getName());                
           ftp.changeWorkingDirectory(file.getName());      
           String[] files = file.list();             
           for (int i = 0; i < files.length; i++) {      
               File file1 = new File(file.getPath()+"\\"+files[i] );      
               if(file1.isDirectory()){      
                   upload(file1);      
                   ftp.changeToParentDirectory();      
               }else{                    
                   File file2 = new File(file.getPath()+"\\"+files[i]);      
                   FileInputStream input = new FileInputStream(file2);      
                   ftp.storeFile(file2.getName(), input);      
                   input.close();                            
               }                 
           }      
       }else{      
           File file2 = new File(file.getPath());      
           FileInputStream input = new FileInputStream(file2);      
           ftp.storeFile(file2.getName(), input);      
           input.close();        
       }      
   }  
   //利用ftpclient的makeDirectory方法创建文件夹
   public void createDir(String dirname){
       try{
           ftp.makeDirectory(dirname);
           System.out.println("在目标服务器上成功建立了文件夹: " + dirname);
       }catch(Exception ex){
           System.out.println(ex.getMessage());
       }
   }
//断开连接
   public void disconnect(){
       try {
           ftp.disconnect();
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
//调用方法
  public static void copyFileByFtp(String filePath) throws Exception{  
  DBHelper db = new DBHelper();
      InputStream is = db.getClass().getResourceAsStream("/config.properties");
      Properties props=new Properties();
      props.load(is);
          String path = (String) props.get("path");
          String addr = (String) props.get("addr");
          int port = Integer.parseInt((String) props.get("port"));
          String username = (String) props.get("ftpUsername");
          String password = (String) props.get("ftpPassword");
  copyFile ftpLink = new copyFile();    
  ftpLink.connect(path.trim(), addr.trim(),port, username.trim(), password.trim());    
  File file = new File(filePath); 
  if (file.exists()) {
  ftpLink.upload(file);  
}else{
System.out.println("!!!!!!!!!文件不存在"+filePath);
}
  ftpLink.disconnect();//断开连接
  }    
}


使用的jar包是 : commons-net-3.0.1.jar,可以在csdn下载的

想要测试的话可以在本地建一个ftp服务器,教程:http://jingyan.baidu.com/article/48206aeadc3c4b216bd6b369.html?qq-pf-to=pcqq.c2c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值