1

sftpを使用してサーバーにファイルをアップロードしようとしています。Chilkatをダウンロードしてインストールしましたが、問題なくファイルをダウンロードしています。しかし、ファイルをサーバーにアップロードしようとすると、ファイルをアップロードしていることを示すエラーは発生しません。応答メッセージを確認すると、「ファイルのアップロードが成功しました1」と表示され、1つはtrueですが、ファイルがサーバーにアップロードされません。

これは私のコードです:

 public void UploadAndMoveFile()
        {
            bool success = false;
            string path = @"\\geodis\";
            string archive = @"\\Archive\";
            string[] files = Directory.GetFiles(path);
            if (files.Count() == 0)
            {
//no files
            }

            foreach (string file in files)
            {
                string fileName = Path.GetFileName(file);
                string fileSource = path + fileName;
                string fileDestination = archive + fileName;
                string handle;
                string ftp = @"\IN\"+fileName;
                handle = sftp.OpenFile(ftp, "writeOnly", "createTruncate");
                if (handle == null)
                {
                    Console.WriteLine(sftp.LastErrorText);
                    return;
                }
                success = sftp.UploadFile(handle, fileSource);
                if (success == true)
                {
                    AppendLogFile("Uploading File Succeeded", "Uploade File", fileName);
                    System.IO.File.Move(fileSource, fileDestination);
                    AppendLogFile("Moving File Succeeded", "Moving File", fileName);
                }
                else
                {
                   // no files
                }
            }
        }

誰かが私が間違っていることを見つけるのを手伝ってくれますか?

4

1 に答える 1

1

問題が見つかりました。アップロード方法で、ftp 変数の代わりにハンドル変数がありました。

ここに解決策があります:

public void UploadAndMoveFile()
        {
            bool success = false;
            string path = @"\\geodis\";
            string archive = @"\\Archive\";
            string[] files = Directory.GetFiles(path);
            if (files.Count() == 0)
            {
//no files
            }

            foreach (string file in files)
            {
                string fileName = Path.GetFileName(file);
                string fileSource = path + fileName;
                string fileDestination = archive + fileName;
                string handle;
                string ftp = @"\IN\"+fileName;
                handle = sftp.OpenFile(ftp, "writeOnly", "createTruncate");
                if (handle == null)
                {
                    Console.WriteLine(sftp.LastErrorText);
                    return;
                }
                success = sftp.UploadFile(ftp, fileSource);
                if (success == true)
                {
                    AppendLogFile("Uploading File Succeeded", "Uploade File", fileName);
                    System.IO.File.Move(fileSource, fileDestination);
                    AppendLogFile("Moving File Succeeded", "Moving File", fileName);
                }
                else
                {
                   // no files
                }
            }
        }
于 2013-02-14T13:44:02.673 に答える