마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

FTP 접속 관련 질문드립니다

0 추천

안녕하세요 

FTPClient로 접속 구현중인데요

파일질라에서는 정상적으로 접속성공 하는데 소스상에서는 Could not parse response code 라는 

IOException이 발생합니다

구글링 해봐도 소스상으로는 별 다른게 없는데 안되네요 ㅠㅠ

@Override
    protected Integer doInBackground(ArrayList<String>... arrayLists) {
        Log.d(TAG, "PictureFtpMultiUploadAsync, doInBackground() Call !!!!");
        try {
            ftpClient.connect( FTP_HOST, FTP_PORT );

            int reply = ftpClient.getReplyCode();

            if(!FTPReply.isPositiveCompletion(reply)) {
                Toast.makeText(context, "PictureFtpMultiUploadAsync, doInBackground() 서버 연결 실패",
                        Toast.LENGTH_SHORT).show();
                return -1;
            }

            ftpClient.setConnectTimeout( 7000 );
            boolean success = ftpClient.login( FTP_ID, FTP_PW );
            ftpClient.setFileType( org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE );
            ftpClient.setBufferSize(1024*1024);
            ftpClient.enterLocalPassiveMode();
            ftpClient.setDefaultTimeout( 3000 );

            Log.d(TAG, "PictureFtpMultiUploadAsync, doInBackground()  success : " + success);
        } catch (IOException e) {
            Log.e(TAG, "PictureFtpMultiUploadAsync, doInBackground() IOException : " + e.getMessage());
        }

        return null;
    }

 

우랴 (3,680 포인트) 님이 2017년 9월 11일 질문

1개의 답변

0 추천
일반적인 FTPClient의 사용은 다음과 같습니다.

FTP 접속시 ID, Password 말고도 WorkingDirectory를 세팅합니다.
파일을 업로드하더라도 WorkingDirectory에 세팅된 곳으로 업로드 하게 되죠.

그외에 다른 문제가 있다면, Secure Socket으로 접속한다면 FTPSClient를 사용하시면 됩니다.

FTPClient ftpClient = new FTPClient();
ftpClient.connect(InetAddress.getByName(server));
ftpClient.login(user, password);
ftpClient.changeWorkingDirectory(serverRoad);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

BufferedInputStream buffIn = null;
buffIn = new BufferedInputStream(new FileInputStream(file));
ftpClient.enterLocalPassiveMode();
ftpClient.storeFile("test.txt", buffIn);
buffIn.close();
ftpClient.logout();
ftpClient.disconnect();
Will Kim (43,170 포인트) 님이 2017년 9월 11일 답변
답변 감사합니다.
FTPClient 접속은 포트를 미입력하니 접속 됐는데요
접속 후 디렉토리 경로 변경이나 폴더 생성이 안되는데
권한 문제인가요???
권한 문제일 가능성이 높은 것 같네요. 해당 user, password로 파일질라로 접속해서 변경이나 생성이 되는지 확인해 봐야 합니다. Ftp Server는 계정마다 워킹디렉토리나 권한이 다르게 지정할 수 있습니다.
파일질라에서 해당 계정으로 폴더생성 해봤더니 안되네요 ㅠㅠ 권한 문제가 맞는것같습니다 답변 감사합니다
...