c#

[c#] FTP에서 매개변수 "logName"을 파일 명으로 가진 파일을 다운로드하는 창 띄우기

Heeyeon Choi 2023. 3. 27. 16:34
728x90
public void OpenLogDownloadWindow(string logName)
        {
            try
            {
                //TODO 최희연 : FTP에서 매개변수 logName을 파일 명으로 가진 파일을 다운로드 창을 띄움
                string fileName = string.Empty;
                //ftp에서 디렉토리 목록 전체 조회한 데이터
                string[] filesInDirectory = LoadFTPData( newUrl + logName, id, pwd, download);
                string data1 = string.Empty;
                for (int i = 0; i < filesInDirectory.Length; i++)
                {
                    data1 += filesInDirectory[i];
                }
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "Text file (*.txt)|*.txt|C# file (*.cs)|*.cs";
                saveFileDialog.InitialDirectory = "D:\\";
                saveFileDialog.Title = "저장 경로를 지정하세요";
                saveFileDialog.FileName= logName;
                saveFileDialog.OverwritePrompt = true;

                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    File.WriteAllText(saveFileDialog.FileName+".txt", data1);
                    Process.Start(saveFileDialog.FileName + ".txt");
                }
            }
            catch (Exception e)
            {
                Logs.Error(e.Message, $"{nameof(DroneLogViewModel)}.{nameof(this.OpenLogDownloadWindow)}");
            }
        }

 

 

LoadFTPData( newUrl + logName, id, pwd, download) 메서드

//FTP에서 데이터를 불러오는 메서드
        public string[] LoadFTPData(string URL, string ID, string PW, string NAME)
        {
            Uri ftpUri = new Uri(URL);

            FtpWebRequest reqFtp = (FtpWebRequest)WebRequest.Create(ftpUri);

            reqFtp.Credentials = new NetworkCredential(ID, PW);
            reqFtp.Timeout = 10000;

            if (NAME.Equals("name"))
            {
                reqFtp.Method = WebRequestMethods.Ftp.ListDirectory;//이름 데이터
            }
            else if (NAME.Equals("all"))
            {
                reqFtp.Method = WebRequestMethods.Ftp.ListDirectoryDetails; //상세 데이터 
            }else if (NAME.Equals("download"))
            {
                reqFtp.Method = WebRequestMethods.Ftp.DownloadFile;
            }

            FtpWebResponse resFtp = (FtpWebResponse)reqFtp.GetResponse();
            StreamReader reader = new StreamReader(resFtp.GetResponseStream());
            string strData= reader.ReadToEnd();

            //ftp에서 디렉토리 목록 전체 조회한 데이터
            string[] filesInDirectory = strData.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            return filesInDirectory;


        }

👉🏻 reqFtp.Method = WebRequestMethods.Ftp.DownloadFile;

파일 내용을 불러올 수 있는 메소드

 

👉🏻 SaveFileDialog

SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "Text file (*.txt)|*.txt|C# file (*.cs)|*.cs"; //다운로드 할 수 있는 파일 형식 지정
                saveFileDialog.InitialDirectory = "D:\\\\"; //다운로드 창을 켰을 때, 디폴트 경로
                saveFileDialog.Title = "저장 경로를 지정하세요"; //팝업창의 이름(제목)
                saveFileDialog.FileName= logName;
                saveFileDialog.OverwritePrompt = true;

                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    File.WriteAllText(saveFileDialog.FileName+".txt", data1); //지정한 경로에 파일을 저장
                    Process.Start(saveFileDialog.FileName + ".txt"); //저장한 파일을 자동으로 팝업(즉시)
                }
  • c# 에서 제공하는 파일 다운로드 창을 띄울 수 있는기능을 제공 SaveFileDialog
  • 파일을 로컬에 저장(.txt 파일로)
  • 저장 후 자동 팝업 
728x90

 

728x90