1
我是Grails框架的新手。我需要通過Grails中的批量應用程序將文本文件上傳到遠程FTP服務器。如果有人有任何建議,一步一步的過程請求如何連接到遠程服務器並上傳文件。如何在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