2017-06-21 86 views
1

我需要从一个服务器上的FTP文件传输到其他。我已经使用了下面的代码。FTP文件传输C#

了许多文件,这部分只传输一个文件。例如。我有一个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文件后,它不会进一步发展。

请帮帮我。

+0

的可能的复制[上传和FTP服务器在C#中下载的二进制文件到//NET](https://开头计算器。 COM /问题/ 44606028 /上传和下载,一个二进制文件到从-FTP服务器功能于C-NET) –

回答

1

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

您的代码:

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文件创建一个新文件,但FileMode.Open。

你也肯定会从LOCAL_FileStream读写FTP_STream ....