2014-07-07 5 views
0

Apache FTPServer에 파일을 업로드하는 데 apache org.apache.commons.net.ftp.FTPClient를 사용하고 있습니다. org.apache.commons.net.ftp.FTPClient.storeFile을 호출하면 "551 Output file on Error"오류로 항상 실패합니다.551 출력 파일에 오류가 발생했습니다.

이것은

public class FileOperations { 

    def ftp (params) { 
     def ftp = new FTPClient() 
     try { 
      ftp.connect(params.host, params.port) 
      println ftp.getReplyString() 

      int reply = ftp.getReplyCode(); 

      if(!FTPReply.isPositiveCompletion(reply)) { 
       ftp.disconnect(); 
       System.err.println("FTP server refused connection."); 
       return 
      } 

      boolean successLogin = ftp.login(params.username, params.password) 
      println ftp.getReplyString() 
      if(!successLogin) { 
       println "FTP login unsuccessful "+params.username 
       return 
      } 

      ftp.setFileType(FTPClient.BINARY_FILE_TYPE) 
      println ftp.getReplyString() 
      ftp.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE) 
      println ftp.getReplyString() 

      String absoluteFilename=params.file 
      def isSuccessful = ftp.storeFile(params.file,new FileInputStream(absoluteFilename)) 

      println ftp.getReplyString() 

      ftp.logout() 

    } finally { 
     if(ftp.isConnected()) 
      ftp.disconnect() 
    } 
} 

    static main(args) { 
    def operations = new FileOperations(); 
    def params = [:] 
    params.put "host","localhost" 
    params.put "port",2121 
    params.put "username","test" 
    params.put "password","test" 
    params.put "file","C:/tmp/sample.txt" 

    operations.ftp(params) 
    } 
} 

출력이 새 사용자

220 서비스 준비가되어 내 프로그램입니다.

230 로그인 한 사용자는 계속 진행하십시오.

200 명령 유형이 정상입니다.

200 명령 MODE OK.

551 /C:/tmp/sample.txt : 출력 파일에서 오류가 발생했습니다.

이 오류의 의미를 이해할 수 없습니다. 누구든지이 문제를 해결할 수 있도록 도와 주시겠습니까?

답변

2

params.put "file","C:/tmp/sample.txt" 

그리고 당신은 FTP 사용자의 FTP 측의 루트 디렉토리에서 상대 절대 또는 상대 경로 이름, 아마 그냥 "샘플되어야 원격 파일 이름으로 이것을 사용하고 있습니다. txt ". (. FTP 서버에 아무런 장치 등 C: 없다)

지역 파일 이름을 읽기 위해 당신이 지금 가지고, 당신은 전체 경로 이름을 사용해야합니다 :

String localFilename = "C:/tmp/sample.txt". 
def isSuccessful = ftp.storeFile(params.file,new FileInputStream(localFilename)) 
관련 문제