336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


FTP 파일 업로드 하기


< 테스트 파일 >

PUploader.zip



사실 테스트 코드 자체는 C# 프로젝트로 하였습니다.


그러나 유니티에서도 동일하게 사용 되므로, 


유니티 카테고리로 설정했습니다.(유니티 확인 완료)


에셋번들을 만들고, FTP로 파일을 업로드(Upload) 해야 하는데, 


매번 직접 해주어야 하니 불편하더라구요.


그래서 시간 조금 투자해서 FTP 파일 업로드를 테스트 했습니다.


* 정말 적은 시간으로 만든거라.. 버그가 많습니다.  코드만 참조하시길.



제 FTP 폴더입니다. 


UploadTest라는 폴더에다가 테스트 하려고 합니다.




테스트 프로그램입니다.


주소, 아이디, 비번, 그리고 폴더경로(이 하위에 애들이 FTP로 업로드 됩니다)를


설정하고 업로드를 누르면 올라갑니다.


실제 유니티에서 할 때에는 주소, 아이디 등을 코드에 박고 하세요.


테스트 프로그램이라서 이렇게 작성한 것입니다.




폴더를 선택하고 업로드를 누르면


정상적으로 올라간 리스트가 나타납니다.




콘솔 창에서도 결과를 볼 수 있습니다.




실제 FTP를 확인해 보면, 


제가 올린 폴더와 파일들이 올라가 있습니다.


테스트 성공.




주요 코드만 올리겠습니다.


즉, 실제 유니티에서 사용할 것만.


< FTP UPLOAD 코드 >


// 폴더 정보 가져오기.
                DirectoryInfo info = new DirectoryInfo(folder);
                // 우리는 루트 폴더를 제외하고 하므로, 전체 경로에서 루트 경로를 제거합니다.
                string folderName = info.FullName.Replace(_strPath, "");

                Console.WriteLine("TargetPath : " + URL + folderName);
                // FTP 주소 + 폴더 경로를해서 폴더를 만들겠습니다.
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(URL + folderName);

                // 비번 아이디를 치고, 여러 설정을 해줍니다.
                // 자신에게 맞게 설정하시면 됩니다.
                request.Credentials = new NetworkCredential(ID, PW);
                request.UsePassive = true;
                request.UseBinary = true;
                request.KeepAlive = false;
                // 폴더를 마들 것이므로, MakeDirectory로 해줍니다.
                request.Method = WebRequestMethods.Ftp.MakeDirectory;
                // 파일을 업로드 할 때에는 다음 메소드를 선택합니다.
                //request.Method = WebRequestMethods.Ftp.UploadFile;

                try
                {
                    // 이제 디렉토리를 만든다고 FTP로 요청을 합니다.
                    FtpWebResponse res = (FtpWebResponse)request.GetResponse();
                    // 요청이 실패하면 CATCH로 넘어갑니다.
                    // 요청이 완료 되었으므로, 리스트에 추가 합니다.
                    m_lUploadList.Add(URL + folderName);
                }
                catch (WebException ex)
                {
                    // 예외처리.
                    FtpWebResponse response = (FtpWebResponse)ex.Response;

                    switch (response.StatusCode)
                    {
                        case FtpStatusCode.ActionNotTakenFileUnavailable:
                            {
                                Console.WriteLine("CreateFolders ] Probably the folder already exist : " + folderName);
                            }
                            break;
                    }
                }


현재 코드는 예외처리 들이 하나도 안되어 있는 거네요.


실제 유니티(에셋번들 자동화)에서 사용할 때에는 


많은 예외처리가 필요할 수 있습니다.


도움되셨길 바랍니다.


+ Recent posts