개발자의 끄적끄적

[JAVA] 자바 FTP 파일 전송 [펌] 본문

개발/java & jsp

[JAVA] 자바 FTP 파일 전송 [펌]

효벨 2020. 1. 9. 04:00
728x90
반응형

[JAVA] 자바 FTP 파일 전송 [펌]

 

프로젝트 안에 FTP로 해당 서버에 파일을 전송 할 일이 생겨서

FTP 전송에 대해서 알아보았다.

먼저 FTP 프로그램을 다운 받고 서버를 구축하였다. ( 다음에 직접 자바로 만들 것 )

예) 알 ftp, filezilla

다운 후 공유할 폴더 지정, 아이디, 비번 생성

그리고 자바에서는 해당 서버의 IP, ID, Password 및 local의 파일경로 및 파일을 선택하고

전송해주는 간단한 방식이였다. 물론 라이브러리(Common net)를 사용해서 간단했지만. (라이브러리 파일첨부)

서버 쪽에서 읽기, 쓰기 권한을 줘야 똑같은 파일을 보내도 덮어쓸 수 있다.

-------------------------------------------------------- 여기까지는 자바에서 돌아가고

안드로이드에서는 해당 라이브러리가 먹히지 않는다. 그래서 라이브러리 압축을 출고 org.apche 패키지들을

소스코드에 첨부시켜주고 실행하면 실행이 된다. Byte Code-> dalvik 가상 머신 문제

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.UnknownHostException;

import com.oroinc.net.ftp.FTP;
import com.oroinc.net.ftp.FTPClient;
import com.oroinc.net.ftp.FTPCommand;
import com.oroinc.net.ftp.FTPReply;


class Trans{



 public static void main(String args[]) throws UnknownHostException {
  FTPClient ftpClient = null;

  String server = "";
  String user = "";
  String password = "";
  String test = "33333333333";

  String myIp = InetAddress.getLocalHost().getHostAddress();

  String path = "/";

  try {
   File out = new File("c:/test.txt"); // 소스안의 데이터를 로컬에 저장
   FileWriter fw = new FileWriter(out);
   PrintWriter pw = new PrintWriter(fw);


   pw.println(server);
   pw.println(user);
   pw.println(path);
   pw.println(test);

   pw.flush();
   pw.close();

  } catch (IOException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }


  try {
   ftpClient = new FTPClient();

   //ftpClient.setControlEncoding("euc-kr");

   ftpClient.connect(server);

   int reply = ftpClient.getReplyCode();

   if (!FTPReply.isPositiveCompletion(reply)) {
    ftpClient.disconnect();
   } else {
    ftpClient.login(user, password);
    ftpClient.sendCommand(FTPCommand.MAKE_DIRECTORY, path);
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
    ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);



    File put_file = new File("c:/test.txt"); // 저장시켰던 파일을 서버로 전송
    InputStream inputStream = new FileInputStream(put_file);
    ftpClient.storeFile(path + "trans.txt", inputStream);

    inputStream.close();
    ftpClient.disconnect();

   }

  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (ftpClient != null && ftpClient.isConnected()) {
    try {
     ftpClient.disconnect();
    } catch (IOException ioe) {
     ioe.printStackTrace();
    }
   }
  }
 }
}

 

출처 : https://m.blog.naver.com/PostView.nhn?blogId=sungjun818&logNo=130153702722&proxyReferer=https%3A%2F%2Fwww.google.com%2F

반응형
Comments