如何在grails中上传文件到远程FTP服务器
How to upload file to remote FTP Server in grails
我是 Grails 框架的新手。我需要通过 Grails 中的批处理应用程序将文本文件上传到远程 FTP 服务器。请求如果有人有建议,逐步处理如何连接到远程服务器并上传文件。
提前致谢。
首先,在您的 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
}
}
}
这将允许您对 class 进行单元测试,您只需模拟 FTPClient
我是 Grails 框架的新手。我需要通过 Grails 中的批处理应用程序将文本文件上传到远程 FTP 服务器。请求如果有人有建议,逐步处理如何连接到远程服务器并上传文件。
提前致谢。
首先,在您的 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
}
}
}
这将允许您对 class 进行单元测试,您只需模拟 FTPClient