如何将文件上传到远程FTP服务器的grails

时间:2015-11-07 20:01:16

标签: file grails upload ftp server

我是Grails框架的新手。我需要通过Grails中的批处理应用程序将文本文件上传到远程FTP服务器。请求是否有人建议,一步一步地处理如何连接到远程服务器并上传文件。

提前致谢。

1 个答案:

答案 0 :(得分:7)

首先,在BuildConfig.groovy(Grails 2.x)或build.gradle(Grails 3.x)中包含commons-net:

compile 'commons-net:commons-net:3.3'

其次添加服务:

class UploadService {
    GrailsApplication grailsApplication

    String upload(String fileName, InputStream inputStream) {
        String status
        new FTPClient().with {
            connect grailsApplication.config.getProperty('ftp.host')
            login grailsApplication.config.getProperty('ftp.username'), grailsApplication.config.getProperty('ftp.password')
            enterLocalPassiveMode()
            setFileType(BINARY_FILE_TYPE)
            changeWorkingDirectory grailsApplication.config.getProperty('ftp.uploadDir')
            storeFile(fileName, inputStream)
            status = replyString
            disconnect()
        }
        return status
    }
}

更新

我忘了添加需要进入grails-app/conf/Config.groovy(Grails 2.x)或grails-app/config/application.groovy的配置:

ftp {
    host = 'some.host'
    username = 'myuser'
    password = '*****'
    uploadDir = 'Uploads'
}

也可以在resources.groovy中创建FTPClient()实例,并改为使用依赖注入。

bean = {
    ftpClient(FTPClient)
}

然后在服务中有这个:

class UploadService {
     GrailsApplication grailsApplication
     FTPClient ftpClient // Will be injected

     String upload(String fileName, InputStream inputStream) {

         String status
         ftpClient.with {
              // Same as above
         }
     }
}

这将允许您对课程进行单元测试,只需模拟FTPClient