"the filename directory name or volume label syntax is incorrect"
혹시 FTP 클라이언트 측에서 위와 같은 오류가 출력 되었나요?
FTP 서버 측에서 몇 개의 폴더가 있다고 가정했을 때,
한글이 포함된 폴더를 Working Directory 로 변경해주면 해당 오류가 출력되는 현상을 확인하였습니다.
저와 같은 상황이였다면 아래 해결 방법을 확인해주세요.
1. 해결 방법
FTPClient connect 전에 인코딩 설정을 추가해주면 됩니다.
ftpClient.controlEncoding = "euc-kr"
꼭 connect 하기 전에 설정 해주세요!
(제가 connect 한 후에 설정해줬는데 같은 문제가 있었네요..ㅠ)
끝으로 FTP Client 측 소스 일부를 참조 해주시면 감사하겠습니다.
try {
val ftpClient = FTPClient()
ftpClient.controlEncoding = "euc-kr"
ftpClient.connect(address, port)
val isConnected = FTPReply.isPositiveCompletion(ftpClient.replyCode)
if (!isConnected) {
Log.d("FTP", "${ftpClient.replyCode}, ${ftpClient.replyString}")
ftpClient.disconnect()
return
}
//ftpClient.controlEncoding = "euc-kr" // connect 전에 세팅을 해줘야합니다..!
ftpClient.soTimeout = 10000
val isSuccess = ftpClient.login(id, password)
if (!isSuccess) {
Log.d("FTP", "${ftpClient.replyCode}, ${ftpClient.replyString}")
ftpClient.disconnect()
return
}
val isWorking = ftpClient.changeWorkingDirectory(path) // controlEncoding 세팅이 안 되면 한글포함된 path 의 경우 문제가 발생하였습니다.
if (!isWorking) {
Log.d("FTP", "${ftpClient.replyCode}, ${ftpClient.replyString}")
ftpClient.disconnect()
return
}
/*....................*/
ftpClient.logout();
} catch (e: IOException) {
e.printStackTrace()
}
감사합니다 해결했습니다.
답글삭제