2015-11-07 65 views

回答

7

首先,在您的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

+0

你好。非常感謝您的快速幫助。我做了一個快速測試它的工作。 – madhavi

+0

當我從另一個服務調用此服務時,獲取異常:ftp.UploadService.connect()適用於參數類型:(groovy.util.ConfigObject)values:[[:]]和單元測試類'grailsApplication'爲空 – madhavi

+0

我能夠通過用戶名,密碼......的硬編碼值來測試連接,但是當我使用grailsApplication變量時,獲得上面的異常。是否有可能在resources.groovy中聲明FTPClient?以便我可以從屬性文件讀取屬性,如果是的話,你可以請教。我怎麼能聲明它。 – madhavi

相關問題