Ejemplo n.º 1
0
        public void TestMethod_SendFile()
        {
            string file         = @"r5.jpg";
            string sourcePath   = @"D:\FTP\";
            bool   expected     = true;
            bool   actual       = false;
            bool   uploadfailed = true;

            if (!proxyftpClient.FileExists(file) && File.Exists(sourcePath + file))
            {
                proxyftpClient.SendFile(file, sourcePath);
            }
            string[] fileList = proxyftpClient.GetDirectoryList();
            foreach (string fileInfo in fileList)
            {
                if (Path.GetFileName(fileInfo) == file)
                {
                    log2.Debug("上傳檔案成功: " + fileInfo);
                    actual       = true;
                    uploadfailed = false;
                    break;
                }
            }
            if (uploadfailed)
            {
                log2.Debug("上傳檔案失敗: " + file);
            }
            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 2
0
        private void SyncDirectory(IFtpClient client, string remotePath, string localPath, bool isDel)
        {
            var localFolder = new DirectoryInfo(localPath);
            var infos       = localFolder.GetFileSystemInfos();

            foreach (var info in infos)
            {
                if (!client.IsConnected)
                {
                    client.Connect();
                }
                if (info is FileInfo)
                {
                    var size = (info as FileInfo).Length;

                    var remoteFile = Path.Combine(remotePath, info.Name);

                    if (!client.FileExists(remoteFile) || client.GetFileSize(remoteFile) != size)
                    {
                        client.UploadFile(info.FullName, remoteFile);

                        Logger.Info($"Uploaded==>{info.FullName}");
                    }
                }
                else if (info is DirectoryInfo)
                {
                    var remoteFile = Path.Combine(remotePath, info.Name);

                    if (!client.DirectoryExists(remoteFile))
                    {
                        client.CreateDirectory(remoteFile);

                        Logger.Info($"CreateFtpDirectory==>{remoteFile}");
                    }
                    SyncDirectory(client, Path.Combine(remotePath, info.Name), info.FullName, isDel);
                }
            }

            if (isDel)
            {
                var items = client.GetListing(remotePath);
                foreach (var item in items)
                {
                    if (infos.All(info => info.Name != item.Name))
                    {
                        if (item.Type == FtpFileSystemObjectType.File)
                        {
                            client.DeleteFile(item.FullName);
                        }
                        else if (item.Type == FtpFileSystemObjectType.Directory)
                        {
                            client.DeleteDirectory(item.FullName);
                        }

                        Logger.Info($"DeletedFtp==>{item.FullName}");
                    }
                }
            }
        }
Ejemplo n.º 3
0
 public bool Exist(string Path, string Filename)
 {
     try
     {
         if (_ftpClient.FileExists(Path + Filename))
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception ex)
     {
         _log.Error($"{FtpTemplateMessage("Exit", Filename, "throw exception")}", ex);
         return(false);
     }
 }
Ejemplo n.º 4
0
        private Task UploadFile(IFtpClient client, ILocalFile file, string remoteDirectoryPath, bool overwrite)
        {
            return(file.OpenStreamForReadAsync().ContinueWith(fileStreamTask =>
            {
                if (client.FileExists(remoteDirectoryPath + "/" + file.Name) && !overwrite)
                {
                    var localDirectoryItem = DependencyService.Resolve <IUploadLocalItem>();

                    localDirectoryItem.Item = file;
                    localDirectoryItem.DestinationPath = remoteDirectoryPath;

                    FileConflicts.Add(localDirectoryItem);
                    return;
                }

                using (var fileStream = fileStreamTask.Result)
                {
                    client.Upload(fileStream, remoteDirectoryPath + "/" + file.Name, overwrite);
                }
            }));
        }