FTP文件传输C#

我需要将FTP上的文件从一台服务器传输到另一台服务器。 我使用了以下代码。

在许多文件中,这仅部分传输单个文件。 对于前者 我有一个56KB的源文件。 运行以下代码后,源文件减少到0kb,并将0KB文件传输到目标而不是56 KB文件大小。

我构建了代码来将所有文件从源传输到目标。 但是,如上所述,在转移单个0KB文件后,它没有进一步发展。

请帮我。

static void Main(string[] args) { string DISCH_DEST = System.Configuration.ConfigurationManager.AppSettings["DISCH_DEST"]; //Contains the source folder in source server string FTP_DISCH = System.Configuration.ConfigurationManager.AppSettings["FTP_DISCH"]; // FTP path (ftp://***********/) string USERNAME = System.Configuration.ConfigurationManager.AppSettings["USERNAME"]; string PASSWORD = System.Configuration.ConfigurationManager.AppSettings["PASSWORD"]; DirectoryInfo DISCH_Directory = new DirectoryInfo(DISCH_DEST); FileInfo[] DISCH_Files = DISCH_Directory.GetFiles("*.*"); foreach (var f in DISCH_Files) //FETCHING FILES FROM THE BULK FOLDER (IN) { string FN = Path.GetFileName(f.FullName); int bufferSize = 1024; FtpWebRequest REQ = (FtpWebRequest)WebRequest.Create(new Uri(String.Format("{0}/{1}",FTP_DISCH,FN))); REQ.Credentials = new NetworkCredential(USERNAME, PASSWORD); REQ.Method = WebRequestMethods.Ftp.UploadFile; Stream FTP_Stream = REQ.GetRequestStream(); FileStream LOCAL_FileStream = new FileStream(f.FullName, FileMode.Create); byte[] bytebuffer = new byte[bufferSize]; int bytesSent = FTP_Stream.Read(bytebuffer, 0, bufferSize); try { while (bytesSent != 0) { LOCAL_FileStream.Write(bytebuffer, 0, bytesSent); bytesSent = FTP_Stream.Read(bytebuffer, 0, bytesSent); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } LOCAL_FileStream.Close(); FTP_Stream.Close(); REQ = null; } } 

在许多文件中,这仅部分传输单个文件。 对于前者 我有一个56KB的源文件。 运行以下代码后,源文件减少到0kb,并将0KB文件传输到目标而不是56 KB文件大小。

我构建了代码来将所有文件从源传输到目标。 但是,如上所述,在转移单个0KB文件后,它没有进一步发展。

请帮我。

现在我不明白为什么你的代码会发送任何文件。

你的代码:

 Stream FTP_Stream = REQ.GetRequestStream(); FileStream LOCAL_FileStream = new FileStream(f.FullName, FileMode.Create); byte[] bytebuffer = new byte[bufferSize]; int bytesSent = FTP_Stream.Read(bytebuffer, 0, bufferSize); 

你正在创建一个新的流,然后从ftp服务器读取它…

如果你发送的文件不是FileMode.Create,因为它创建了一个新文件,但是FileMode.Open。

你肯定会读取LOCAL_FileStream并写入FTP_STream ….