Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

모바일 앱(안드로이드)

안드로이드 앱 만들기 : FTP Clietn 만들어 보기, 백업 앱 만들기

Billcorea 2023. 7. 10. 19:16
반응형

앱을 구현하는 동안 FTP 접속을 통해서 파일을 서버로 전송하는 앱을 구현해 보기로 하겠습니다. 

 

먼저 gradle 파일에 아래 항목을 추가합니다. FTP 서버를 활용하기 위해서는 필요합니다.

implementation 'commons-net:commons-net:3.9.0'

 

코드 구현에 필요한 코드는 아래와 같습니다. 이 명령줄을 이용해서  접속할 서버 정보를 이용해 파일을 보내 보는 것입니다.


import org.apache.commons.net.ftp.FTP
import org.apache.commons.net.ftp.FTPClient
import java.io.File
import java.io.FileInputStream

fun uploadFileToFtp(file: File, ftpServer: String, ftpUsername: String, ftpPassword: String, ftpDirectory: String) {
    val ftpClient = FTPClient()
    ftpClient.connect(ftpServer)
    ftpClient.login(ftpUsername, ftpPassword)
    ftpClient.enterLocalPassiveMode()
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE)
    ftpClient.changeWorkingDirectory(ftpDirectory)

    val inputStream = FileInputStream(file)
    val fileName = file.name
    ftpClient.storeFile(fileName, inputStream)
    inputStream.close()

    ftpClient.logout()
    ftpClient.disconnect()
}

 

서버 접속 설정해 보기

화면에서는 서버 접속을 위한 정보를 입력하여 이 정보를 이용해서 FTP 서버에 접속해 보겠습니다.  그런데 일반적으로는 FTP 서버를 가지고 있지는 않을 것입니다.  그래서 저는 NAS을 활용해 보기로 했습니다. 

 

iptime NAS 의 FTP 서비스 정보 설정 하기

ip Time NAS 을 사용하는 경우이기 때문에 자신이 가지고 있는 것을 이용해서 설정을 해야 합니다.  

  • 포트번호는 기본값이 21입니다.  왜 21 이냐고 물어보신다면 그건 구글에서 찾아보시길 추천해 드립니다.
  • 모든 사용자를 익명으로 사용은 체크하지 않습니다. 그래야 사용자 관리에서 입력한 사용자를 선택해서 id와 password을 입력해 볼 수 있기 때문입니다. 
  • 다음은 공유폴더를 하나 선택해서 FTP에서 사용할 폴더로 지정해 주어야 합니다. 여기서 선택하는 경로를 실제 FTP client 프로그램에서 접속해 보려면 실제 접속해서 확인을 해 보아야 합니다. 

ftp 접속해 보기

windows의 경우 cmd 창을 열어서 ftp을 실행해 봅니다.  그다음과 같은 순서로 서버에 접속해 봅니다. 

  • open 192.168.0.7 ( 서버 IP는 NAS의 아이피와 동일합니다)
  • 사용자 이름 입력 
  • password 입력
  • dir을 입력해서 현재 경로를 확인합니다. 

위 그림과 같이 로그인 후 바로 확인되는 경로는 HDD1입니다. 위 설정에서는 BackupDocument였는 데 말입니다. 그래서  HDD1에 접근하고 나서 다시 확인 보면 이제야 해당 경로가 나오는 것을 알 수 있습니다.  그래서 경로 확인은 꼭 접속해 확인해 보아야 하는 이유입니다.

 

이상으로 오늘은 FTP 접속하는 방법과 kotlin 코드를 알아보았습니다.

 

반응형