如何在grails中将文件上传到远程FTP服务器
问题描述:
我是Grails框架的新手。我需要通过Grails中的批量应用程序将文本文件上传到远程FTP服务器。如果有人有任何建议,一步一步的过程请求如何连接到远程服务器并上传文件。如何在grails中将文件上传到远程FTP服务器
在此先感谢。
答
首先,在您的BuildConfig.groovy(Grails的2.X)公网或的build.gradle(Grails的3.X):
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
你好。非常感谢您的快速帮助。我做了一个快速测试它的工作。 – madhavi
当我从另一个服务调用此服务时,获取异常:ftp.UploadService.connect()适用于参数类型:(groovy.util.ConfigObject)values:[[:]]和单元测试类'grailsApplication'为空 – madhavi
我能够通过用户名,密码......的硬编码值来测试连接,但是当我使用grailsApplication变量时,获得上面的异常。是否有可能在resources.groovy中声明FTPClient?以便我可以从属性文件读取属性,如果是的话,你可以请教。我怎么能声明它。 – madhavi