예제 #1
0
        public void ProcessRawPackagesFromFtpServer()
        {
            // Can support process local file if web server, ftp server, file download server on the same physical machine
            string fileServerIpAddress = GetFileServerIpAddress();
            int    fileServerPort      = GetFileServerPort();

            string serverUrl = FtpUtil.GetFileServerUrl(fileServerIpAddress, 21, "subset");

            FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(serverUrl);

            ftpRequest.Method      = WebRequestMethods.Ftp.ListDirectory;
            ftpRequest.Credentials = FtpUtil.GetFileServerCredential();

            FtpWebResponse ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

            string[] directoryOrFileNames;
            using (Stream responseStream = ftpResponse.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream);
                string       result = reader.ReadToEnd();
                directoryOrFileNames = String.IsNullOrEmpty(result) ? null : result.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
            }

            List <string> filteredResult = new List <string>();

            for (int i = 0; i < directoryOrFileNames.Length; i++)
            {
                string fileName = directoryOrFileNames[i];
                if (fileName.EndsWith(".zip"))
                {
                    string serverFileFullPath = string.Format("{0}/{1}", serverUrl, fileName);
                    FtpUtil.ProcessSourceFileFromFTPServer(serverFileFullPath, @"C:\GmuTemp");
                }
            }

            // Upload processed file back to ftp server
        }