임뫜
970
2019-01-22 15:43:46
12
1675

FTPClient 파일 다운로드시 0바이트..


현재 아파치 FTPClient를 사용하여 업로드 및 다운로드를 구현하고 있습니다.

업로드는 정상 동작 되지만 다운로드 시 0바이트로 받아지는 문제(ftpClient.retrieveFile 부분이 false)가 있습니다.


파일 다운로드 컨트롤러부분 일부


우선 디렉토리가 많다보니 404번째 줄에 데이터베이스에서 가져온 path부분에서 디렉토리부분을 잘라서

423~427번 라인처럼 디렉토리를 따라 들어갔습니다. 


그리고 이후 코드는

https://www.codejava.net/java-se/networking/ftp/java-ftp-file-download-tutorial-and-example

해당 사이트를 참조하여 작성하였습니다.


문제는 442번째 줄에서 false를 내놓습니다. 

파일을 못읽는다는 뜻인가요?ㅠㅠ 0바이트로 다운받아지네요..

경로부분은 제대로 잡고있다고 생각합니다.


아니면 FTP권한 문제인가요?

해당 아이디와 비밀번호로 업로드기능이 잘 되어서 .... 권한문제는 아닌것 같고..


도움이 필요합니다 ㅠㅠ 이틀째 헤매네요ㅠㅠ


0
0
  • 답변 12

  • 늅늅
    623
    2019-01-22 17:13:56

               

    428번 라인에 아래 코드 결과 값이 어떻게 나오나요?

    -----------------------------------------

    System.out.println(ftpClient.getReplyString());

    System.out.println(ftpClient.getReplyCode());

    -----------------------------------------




    boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);

    success  값이 참인가염?



    1
  • 임뫜
    970
    2019-01-22 17:55:20

    늅늅

    답변주셔서 감사합니다. 해당 코드 테스트 결과값 입니다.

    ---------------------------------

    250 CWD command successful.

    250

    ---------------------------------


    아래의 success값이 false로 나옵니다 ㅠ

    0
  • 늅늅
    623
    2019-01-22 18:02:08

    423라인 부터 427라인 까지 경로 변경하는 소스 주석으로 막아보고 해보세요.


    그리고 433라인 아래에 

    System.out.println(ftpClient.getReplyString());

    System.out.println(ftpClient.getReplyCode());


    결과값 어떻게 나오나요? 

    경로 아니면 파일명이 틀려서 그런것 같은데





    1
  • 임뫜
    970
    2019-01-22 18:11:27

    늅늅

    내일 출근하자마자 다시 해보고 말씀드리겠습니다. ㅠㅠ 퇴근해서요 ㅠㅠ 

    0
  • 임뫜
    970
    2019-01-23 09:08:24

    늅늅

    423라인부터 427라인까지 경로변경 소스 주석처리 후 결과값은


    ---------------------------------

    200 Type set to I.

    200

    ---------------------------------


    으로 나오네요

    0
  • 늅늅
    623
    2019-01-23 09:35:56

    boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);

    아래 ftpClient.getReplyString() 결과값이 200 나오는거 보면 에러는 없는것 같은데..


    서버에 FTP_USER 로 접속해서 ftpDir 파일 경로 및 파일명이 맞는거겠죠?


    문제는 없을텐데 ftpDir 에 PATH에 파일명은 안넣어도 될듯~




    1
  • 임뫜
    970
    2019-01-23 09:51:55 작성 2019-01-23 09:54:05 수정됨

    늅늅

    넵 ㅠㅠ  3번째 사진처럼 해당 경로에 파일이 존재합니다 ㅠ


    아 success 아래에 넣으시라는거였군요 ㅠ


    boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);

    아래 ftpClient.getReplyString() 결과값이 200 나오는거 보면 에러는 없는것 같은데..

    >>

    해당 부분 아래에 넣으니 

    550 /hns_file/price/2019/01/201812_????_V1.pdf: The filename, directory name, or volume label syntax is incorrect. 

    이렇게 나오네요...한글 인코딩.. 


    가져올때 한글 인코딩은 어떻게해야하나요ㅠ

    ftpClient.setControlEncoding("euc_kr");

    커넥션 아래에 euc-kr을 추가해도 안되네요

    0
  • 임뫜
    970
    2019-01-23 10:03:45 작성 2019-01-23 10:06:56 수정됨

    늅늅


    앗 한글 인코딩을 연결전에 설정하니까 되네요!


    한가지 더 여쭤보고 싶은데요.


    해당 파일을 
    437번라인처럼 로컬 경로를 설정하지않고

    441, 445 라인처럼 다운받게 하고 싶은데 해당부분에서 오류가 나네요 ㅠ


    download.do 로 받아지네요ㅠ


    0
  • 임뫜
    970
    2019-01-23 10:16:50

    늅늅

    정말 감사합니다. 모두 해결했어요!!

    브라우저별 코딩 설정하고 다시해주니까 잘돌아가네요

    정말 덕분에 모든게 뻥뚫리네요 ㅠㅠ

    사수없이 혼자 독학하면서 하다보니 코드 받는것도 몰랐었고 ㅠㅠ


    정말 감사합니다! 최고이십니다.

    0
  • 늅늅
    623
    2019-01-23 10:31:20

    사수 없이 고생이 많으시네요~


    해결 되어서 다행입니다.~



    1
  • pianoman
    518
    2019-02-01 11:20:55

    문제 해결되셨다니 다행입니다.

    좀 늦긴 했지만, 저도 비슷한걸 만들고 있는데요.


    혹시 retrieveFile에서 파일을 어떤때는 정상적으로 읽다가, 어떤때는 정상적으로 못읽고 0으로 리턴하는 경우는 없으신가요?


    저는 얼마전에 질문글도 남겼지만... 아직 명쾌한 답이 없는 상태입니다 ㅠ.ㅜ;

    제 증상은 같은 소스로 실행하면

    제대로 읽어와서 후속작업 처리 잘되는 경우가 있는 반면

    같은소스, 같은 파일로 실행했을 때(심지어 파일명 하드코딩 및 경로 루트로)

    못읽고 0 떨어지는 경우가 있습니다...


    정상적으로 되는 경우가 있다보니 계정권한 등등 문제는 아닐거라 접어두고,

    아직도 이게 되다말다 하고 있어서 미치고 환장하겠네요....


    혹시 비슷한 증상 겪으시면 확인좀... 같이 고민좀 부탁드립니다 ㅠ.ㅜ;

    0
  • 임뫜
    970
    2019-02-12 14:05:09

    pianoman


    아뇨 그런현상은 아직 저도 겪어보지 못했네요 ㅠㅠ

    도움되지 못해 아쉽네요

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.