2017-06-21 39 views
1

FTP上のファイルをあるサーバーから別のサーバーに転送する必要があります。私は以下のコードを使用しています。FTPファイル転送C#

多くのファイルのうち、1つのファイルのみが部分的に転送されています。例えば、私は56KBのソースファイルを持っています。以下のコードを実行した後、ソースファイルは0kbに縮小され、56KBのファイルサイズではなく0KBのファイルが宛先に転送されました。

すべてのファイルを送信元から宛先に転送するコードを作成しました。しかし、上記のように単一の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; 


       } 


      } 

多くのファイルのうち、1つのファイルのみが部分的に転送されています。例えば、私は56KBのソースファイルを持っています。以下のコードを実行した後、ソースファイルは0kbに縮小され、56KBのファイルサイズではなく0KBのファイルが宛先に転送されました。

すべてのファイルを送信元から宛先に転送するコードを作成しました。しかし、上記のように単一の0KBファイルを転送した後はさらに進んでいません。

私を助けてください。

+0

可能性の重複[アップロードおよびC#でFTPサーバーへ/からバイナリファイルをダウンロード/ NET。](https://でのstackoverflow。 ftp-server-in-c-netのアップロードとダウンロードのバイナリファイルからFTPへの/ com/questions/44606028) –

答えて

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); 

あなたがファイルを送信していた場合、それはにFileModeことwouldntは...

を新しいストリームを作成し、それに入れて、FTPサーバから読んでいます.Create、それは新しいファイルを作成しますが、FileMode.Openを作成します。

あなたはまたきっとLOCAL_FileStreamから読み取られ、FTP_STreamに書くでしょう....

関連する問題