예제 #1
0
        private List <string> GetFileList(TargetTransformData sourceData)
        {
            List <string> result   = new List <string>();
            WebResponse   response = null;
            StreamReader  reader   = null;

            var           url    = sourceData.IpAddress + sourceData.Path;
            FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));

            reqFTP.UseBinary   = true;
            reqFTP.Credentials = new NetworkCredential();
            reqFTP.Method      = WebRequestMethods.Ftp.ListDirectory;
            reqFTP.Proxy       = null;
            reqFTP.KeepAlive   = false;
            reqFTP.UsePassive  = false;
            response           = reqFTP.GetResponse();
            using (reader = new StreamReader(response.GetResponseStream()))
            {
                string line = reader.ReadLine();
                while (line != null)
                {
                    result.Add(line);
                    line = reader.ReadLine();
                }
            }
            return(result);
        }
예제 #2
0
        public void Send(TargetTransformData targetData, IList <string> files)
        {
            foreach (var file in files)
            {
                var           fileName = Path.GetFileName(file);
                var           pathName = targetData.IpAddress;
                FtpWebRequest request  = (FtpWebRequest)WebRequest.Create(pathName + '/' + fileName);
                request.Method      = WebRequestMethods.Ftp.UploadFile;
                request.Credentials = new NetworkCredential();

                FileInfo fi = new FileInfo(file);
                request.ContentLength = fi.Length;
                byte[] buffer      = new byte[4097];
                int    bytes       = 0;
                int    total_bytes = (int)fi.Length;
                using (FileStream fs = fi.OpenRead())
                    using (Stream rs = request.GetRequestStream())
                    {
                        while (total_bytes > 0)
                        {
                            bytes = fs.Read(buffer, 0, buffer.Length);
                            rs.Write(buffer, 0, bytes);
                            total_bytes = total_bytes - bytes;
                        }
                    }

                using (FtpWebResponse uploadResponse = (FtpWebResponse)request.GetResponse())
                {
                    var response = uploadResponse.StatusDescription;
                }
                File.Delete(file);
            }
        }
예제 #3
0
        public List <string> Receive(TargetTransformData sourceData, string targetPath, string regex)
        {
            List <string> result     = new List <string>();
            string        host       = sourceData.IpAddress;
            string        userName   = sourceData.Login;
            string        password   = sourceData.Password;
            string        sourcePath = sourceData.Path;
            string        localPath  = targetPath;

            WildcardPattern wildCard = new WildcardPattern(regex);

            using (var sftp = new SftpClient(host, userName, password))
            {
                sftp.Connect();
                var files = sftp.ListDirectory(sourcePath);
                foreach (var file in files)
                {
                    string fileName = file.Name;
                    if (wildCard.IsMatch(fileName))
                    {
                        Stream file1 = File.OpenRead(localPath);
                        sftp.DownloadFile(file.FullName, file1);
                        result.Add(localPath + file.Name);
                    }
                }
            }
            return(result);
        }
예제 #4
0
        public void Send(TargetTransformData targetData, IList <string> files)
        {
            string destinyPath = targetData.Path;

            foreach (var file in files)
            {
                string fileName     = Path.GetFileName(file);
                string combinedName = Path.Combine(destinyPath, fileName);
                File.Move(file, combinedName);
            }
        }
예제 #5
0
        public List <string> Receive(TargetTransformData sourceData, string targetPath, string regex)
        {
            string sourcePath = sourceData.Path;

            string[] files = Directory.GetFiles(sourcePath, regex);

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

            foreach (var file in files)
            {
                string fileName     = Path.GetFileName(file);
                string combinedName = Path.Combine(targetPath, fileName);
                File.Move(file, combinedName);

                movedFiles.Add(combinedName);
            }
            return(movedFiles);
        }
예제 #6
0
        public void Send(TargetTransformData targetData, IList <string> files)
        {
            string host     = targetData.IpAddress;
            string userName = targetData.Login;
            string password = targetData.Password;

            using (var sftp = new SftpClient(host, userName, password))
            {
                sftp.Connect();
                foreach (var file in files)
                {
                    using (var fileStream = new FileStream(file, FileMode.Open))
                    {
                        sftp.BufferSize = 4 * 1024; // bypass Payload error large files
                        sftp.UploadFile(fileStream, Path.GetFileName(file));
                    }
                    File.Delete(file);
                }
            }
        }
예제 #7
0
        public List <string> Receive(TargetTransformData sourceData, string targetPath, string regex)
        {
            var allFiles = GetFileList(sourceData);

            WildcardPattern wildCard = new WildcardPattern(regex);

            List <string> files = allFiles.Where(x => wildCard.IsMatch(x)).ToList();

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

            foreach (var file in files)
            {
                var           pathName = sourceData.IpAddress + sourceData.Path + file;
                FtpWebRequest request  = (FtpWebRequest)WebRequest.Create(pathName);

                request.Method      = WebRequestMethods.Ftp.DownloadFile;
                request.Credentials = new NetworkCredential();
                string proxyFile = targetPath + file;
                if (File.Exists(proxyFile))
                {
                    throw new Exception(String.Format("file <{0}> already exists", proxyFile));
                }

                using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
                    using (Stream responseStream = response.GetResponseStream())
                        using (StreamReader reader = new StreamReader(responseStream))
                            using (StreamWriter destination = new StreamWriter(proxyFile))
                            {
                                destination.Write(reader.ReadToEnd());
                                destination.Flush();
                            }

                request             = (FtpWebRequest)WebRequest.Create(pathName);
                request.Method      = WebRequestMethods.Ftp.DeleteFile;
                request.Credentials = new NetworkCredential();
                using ((FtpWebResponse)request.GetResponse()){}
                result.Add(proxyFile);
            }
            return(result);
        }