日期:2014-05-16  浏览次数:20302 次

jsp 往 FTP 上传文件问题

?FtpUtil:

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;




import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;

public class FtpUtil {
    FtpClient ftpClient ;
    /** 
        * connectServer 
        * 连接ftp服务器 
        * @throws java.io.IOException 
        * @param path 文件夹,空代表根目录 
        * @param password 密码 
        * @param user   登陆用户 
        * @param server 服务器地址 
        */ 
      public void connectServer(String server, String user, String password,  String path) 
      throws IOException  
      { 
         // server:FTP服务器的IP地址;user:登录FTP服务器的用户名 
         // password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径 
         ftpClient = new FtpClient(); 
         ftpClient.openServer(server); 
         ftpClient.login(user, password); 
         //path是ftp服务下主目录的子目录 
         if (path.length() != 0)  ftpClient.cd(path); 
         //用2进制上传、下载 
         ftpClient.binary();      
     } 
      public void connectServer() throws IOException  
      { 
         // server:FTP服务器的IP地址;user:登录FTP服务器的用户名 
         // password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径 
         ftpClient = new FtpClient(); 
         ftpClient.openServer("221.193.212.119"); 
         ftpClient.login("admin", "admin"); 
         //path是ftp服务下主目录的子目录 
        ftpClient.cd("test"); 
         
         //用2进制上传、下载 
         ftpClient.binary();      
     } 
      
     /** 
        * upload 
        * 上传文件 
        * @throws java.lang.Exception 
        * @return -1 文件不存在 
        *          -2 文件内容为空  
        *          >0 成功上传,返回文件的大小 
        * @param newname 上传后的新文件名 
        * @param filename 上传的文件 
        */ 
     public long upload(String filename,String newname) throws Exception  
     { 
         long result = 0; 
         TelnetOutputStream os = null; 
         FileInputStream is = null; 
         try {    
             connectServer();
             java.io.File file_in = new java.io.File(filename); 
             if (!file_in.exists()) return -1; 
             if (file_in.length()==0) return -2; 
             os = ftpClient.put(newname); 
             result = file_in.length(); 
             is = new FileInputStream(file_in); 
             byte[] bytes = new byte[1024]; 
             int c; 
             while ((c = is.read(bytes)) != -1) { 
                  os.write(bytes, 0, c); 
             } 
         }finally { 
             if (is != null) { 
                 is.close(); 
             } 
             if (os != null) { 
                os.close(); 
             } 
             closeServer();
         } 
        return result; 
     } 
     /** 
        * upload 
        * @throws java.lang.Exception 
        * @return  
        * @param filename 
        */ 
     public long upload(String filename) 
     throws Exception  
     { 
        String str = ""; 
        System.out.println("11111");
        if (filename.indexOf("/")>-1) 
        { 
            str = filename.substring(filename.lastIndexOf("/")+1); 
        }else 
        { 
            str = filename; 
        } 
        System.out.println("22222");
        String suffix=filename.substring(filename.lastIndexOf("."),filename.length());
        
        String md5=MD5Digest.Md5(str);
        java.text.SimpleDateFormat simpledateformat;
        simpledateformat = new java.text.SimpleDateFormat ("yyyyMMddhhmmssss");
        Date dt=new Date();
        String strDate=simpledateformat.format(dt);
           String newname=strDate+md5+suffix; 
           
           
           System.out.println("filename:"+filename);

        System.out.println("newname:"+newname);
        
        
      
       return upload(filename,newname);
       
     } 
      
     /** 
        *  download 
        *  从ftp下载文件到本地 
        * @throws java.lan