2017-03-29 10 views
-1

ファイルをftpサーバーにアップロードする際に問題があります。windows form c#ftp uploader

ウィンドウのフォームが開きますが、アップロードボタンをクリックしても何も起こりません。 アップロードするFTPログ情報とファイル用の構造を作成しました。 問題があるのはdo_work関数だと思うが、見つけられないようだ。

struct FtpSetting 
{ 
    public string Server { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; } 
    public string FileName { get; set; } 
    public string Fullname { get; set; } 
} 

FtpSetting inputParameter; 


private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) 
{ 
    string filename = ((FtpSetting)e.Argument).FileName; 
    string fullname = ((FtpSetting)e.Argument).Fullname; 
    string username = ((FtpSetting)e.Argument).Username; 
    string password = ((FtpSetting)e.Argument).Password; 
    string server = ((FtpSetting)e.Argument).Server; 
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(string.Format("{0}/{1}",server,filename))); 
    request.Method = WebRequestMethods.Ftp.UploadFile; 
    request.Credentials = new NetworkCredential(username, password); 
    Stream ftpStream = request.GetRequestStream(); 
    FileStream fs = File.OpenRead(fullname); 
    byte[] buffer = new byte[1024]; 
    double total = (double)fs.Length ; 
    int byteRead = 0; 
    double read = 0; 
    do 
    { 
     if (!backgroundWorker.CancellationPending) 
     { 
      byteRead = fs.Read(buffer, 0, 1024); 
      ftpStream.Write(buffer, 0, byteRead); 
      read += (double)byteRead; 
      double pourcentage = read/total * 100; 
      backgroundWorker.ReportProgress((int)pourcentage); 
     } 

    } while (byteRead != 0); 
    fs.Close(); 
    ftpStream.Close(); 

} 
+0

のようなものを試してみてください。 – jdweng

+0

エラーが生じますか?そこにあるログをチェックできるFTPサーバーにアクセスできますか? –

+0

@ jdweng私はC#でコーディングを始めました。 – soichiro

答えて

0

あなたは '+ =' を使用してDoWorkイベントを登録していることを確認し、この

class Test 
    { 
     public Test() 
     { 
      BackgroundWorker backgroundWorker = new BackgroundWorker(); 
      backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork); 
      backgroundWorker.RunWorkerAsync(); 
     } 

     private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) 
     { 
     } 
    } 
+0

助けてくれてありがとう – soichiro