当前位置:web 服务器 > Apache >>

关于Grails中FTP(apache)上传下载删除等功能的实现

这个工具类是对Apache的Ftp的操作

[java] 
import java.io.IOException; 
 
import org.apache.commons.net.ftp.FTP 
import org.apache.commons.net.ftp.FTPClient 
import org.apache.commons.net.ftp.FTPClientConfig 
import org.apache.commons.net.ftp.FTPFile 
import org.apache.commons.net.ftp.FTPReply 
 
 
class FtpUtils { 
    /**
     * 用于连接ftp服务器并配置相关信息
     * @return
     */ 
    def connect(){<pre name="code" class="java">                //获取配置信息,读取grails工程下target/classes文件夹下的FtpProperty.groovy 
        def config = new ConfigSlurper().parse( new File( "${System.properties['user.dir']}/target/classes/FtpProperty.groovy" ).toURL()) 
         
        FTPClient ftp = new FTPClient(); 
        ftp.setControlEncoding("UTF-8"); 
         
         
        int reply; 
        //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 
        if(config.FtpProperty.port){ 
            ftp.connect(config.FtpProperty.url, config.FtpProperty.port); 
        }else{ 
            ftp.connect(config.FtpProperty.url) 
        } 
        //登录 
        ftp.login(config.FtpProperty.username, config.FtpProperty.password); 
        reply = ftp.getReplyCode(); 
        if (!FTPReply.isPositiveCompletion(reply)) { 
            ftp.disconnect(); 
        } 
        //指定目录 
        ftp.changeWorkingDirectory(config.FtpProperty.path); 
        return ftp; 
    } 
     
    /**
     * 上传文件到ftp服务器上
     * @param filename  文件名
     * @param file  上传的文件
     * @return
     */ 
    def uploadFile(String filename, File file){ 
        FTPClient ftp = connect(); 
        FTPClientConfig conf=new FTPClientConfig(FTPClientConfig.SYST_NT); 
        conf.setServerLanguageCode("zh"); 
        ftp.configure(conf); 
        ftp.setFileType(FTP.BINARY_FILE_TYPE);  //使用二进制流上传文件 
        file.withInputStream {ostream -> 
            ftp.storeFile(filename, ostream) 
            ostream.close() 
        } 
        ftp.logout(); 
        ftp.disconnect() 
    } 
     
    /**
    * Description: 向FTP服务器上传文件
    * @param ftpPath 上传到FTP上的路径如"/test/img/" 一定要以"/"开头并且以"/"结束
    * @param filename 上传到FTP服务器上的文件名
    * @param input 输入流 
    * @return 成功返回true,否则返回false
    */ 
   public boolean uploadFile(String ftpPath, String filename, InputStream input) { 
       boolean success = false; 
       FTPClient ftp = null; 
       try { 
           ftp = connect() 
           FTPClientConfig conf=new FTPClientConfig(FTPClientConfig.SYST_NT); 
           conf.setServerLanguageCode("zh"); 
           ftp.configure(conf); 
           ftp.setFileType(FTP.BINARY_FILE_TYPE);  //使用二进制流上传文件 
           if(ftpPath != null && ftpPath != "" && ftpPath.contains("/")){ 
                    //创建服务器远程目录结构,创建失败直接返回 
                if(!createDirecroty(ftpPath, ftp)){ 
                    return false; 
                } 
//              changeDirecroty(ftpPath,ftp) 
            } 
           ftp.storeFile(filename, input); 
           
           ftp.logout(); 
           success = true; 
       } catch (IOException e) { 
           e.printStackTrace(); 
       } finally { 
            input.close(); 
           if (ftp.isConnected()) { 
               try { 
                   ftp.disconnect(); 
               } catch (IOException ioe) { 
               } 
           } 
       } 
补充:软件开发 , Java ,

Apache
IIS
Nginx
Tomcat
如果你遇到web 服务器难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,