如何将.db文件格式的文件从远程服务器上传到本地服务器?

时间:2019-08-05 04:39:08

标签: c# json sftp file-transfer

我正在尝试创建SFTP C#应用程序。此应用程序会将文件从远程目录下载到本地服务器,在本例中为本地笔记本电脑。我设法使某些功能正常工作,但是由于我是C#新手,并且有几个月的经验,所以我仍然不了解很多事情。这是应用程序interface

基本上,该应用程序从JSON文件中读取数据,该文件具有连接到SFTP服务器的所有信息,这就是我读取和反序列化JSON文件的方式。

string text = File.ReadAllText(filePath);
var currentList = JsonConvert.DeserializeObject<List<Datalogger>>(text);

以下是我的JSON文件的示例:

[
  {
    "Record": 1,
    "IPaddress": "192.168.6.247",
    "Machinename": "taurus",
    "username": "root",
    "password": "root",
    "sourcefolder": "/home/root/conf",
    "destfolder": "C:/Users/Sami/Desktop/DB Files/",
    "filextension": "db",
    "removedownloaded": 0
  },
  {
    "Record": 2,
    "IPaddress": "192.168.2.255",
    "Machinename": "taurus",
    "username": "root",
    "password": "root",
    "sourcefolder": "/home/root/conf",
    "destfolder": "C:/Users/Sami/Desktop/DB Files/",
    "filextension": "json",
    "removedownloaded": 1
  },
  {
    "Record": 3,
    "IPaddress": "192.168.4.255",
    "Machinename": "taurus",
    "username": "root",
    "password": "root",
    "sourcefolder": "/home/root/conf",
    "destfolder": "C:/Users/Sami/Desktop/DB Files/",
    "filextension": "db-journal",
    "removedownloaded": 1
  }
]

我在下面尝试了此实现,它可以完美地处理带有.JSON和.txt的文件,但是当我切换到带有.db文件的目录时,它似乎无法正常工作或无法下载(.db )。

这是我从JSON文件提取值的方法:

string host = currentList[0].IPaddress;
string username = currentList[0].username;
string password = currentList[0].password;
string remoteDirectory = currentList[0].sourcefolder;
string localDirectory = currentList[0].destfolder;

using (SftpClient sftp = new SftpClient(host, username, password))
            {
                try
                {
                    sftp.Connect();
                    Console.WriteLine("Machine 1 - Connected");
                    var files = sftp.ListDirectory(remoteDirectory);

                    foreach (var file in files)
                    {
                        try
                        {
                            string remoteFileName = file.Name;
                            //if ((file.Name.EndsWith(".db")))

                                using (Stream file1 = File.OpenWrite(localDirectory + remoteFileName))
                                {

                                //if (!file.IsDirectory && !file.IsSymbolicLink)

                                sftp.DownloadFile(path: remoteDirectory + remoteFileName, output: file1);


                                }

                            sftp.Disconnect();
                        }

关于如何将.db文件下载到本地服务器的任何想法。

0 个答案:

没有答案