2015-10-28 9 views
2

Я попытался загрузить и загрузить ftp, но он все время идет на ошибку Nullreference. Может быть, opennetcf.net.ftp не лучший способ решить проблему? Может ли кто-нибудь помочь мне решить проблему?ftp upload/download in C# для windows mobile 6.5 с opencf.net.ftp

namespace ftp_load 
{ 



    public partial class Form1 : Form 
    { 

     public class FTPManagerClass 
     { 
      private static string password = ""; 
      private static string username = ""; 
      private static string host = ""; 

      private FtpWebRequest ftpRequest = null; 
      private FtpWebResponse ftpResponse = null; 
      private Stream ftpStream = null; 
      // private int bufferSize = 2048; 

      public FTPManagerClass(string user, string pass, string hostname) 
      { 
       username = user; 
       password = pass; 
       host = hostname; 

      } 

      public void DownloadFile(string remoteFile, string localFIle) 
      { 
       try 
       { 
        ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile); 
        ftpRequest.Credentials = new NetworkCredential(username, password); 
        //ftpRequest.UseBinary = true; 
        ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile; 
        ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); 
        ftpStream = ftpResponse.GetResponseStream(); 
        FileStream fs = new FileStream(localFIle, FileMode.OpenOrCreate); 

        fs.Close(); 
        ftpStream.Close(); 
        ftpResponse.Close(); 
        ftpRequest = null; 


       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 

       } 
      } 

      public void UploadFile(string localFile, string remoteFile) 
      { 
       try 
       { 
        ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile); 
        ftpRequest.Credentials = new NetworkCredential(username, password); 
        // ftpRequest.UseBinary = true; 
        // ftpRequest.UsePassive = true; 
        ftpRequest.KeepAlive = false; 
        ftpRequest.Method = WebRequestMethods.Ftp.UploadFile; 
        ftpStream = ftpRequest.GetRequestStream(); 
        FileStream lfs = new FileStream(localFile, FileMode.Open); 
        byte[] bytebuffer = new byte[lfs.Length]; 
        int bytesSend = lfs.Read(bytebuffer, 0, (int)lfs.Length); 
        try 
        { 

         while (bytesSend != -1) 
         { 
          ftpStream.Write(bytebuffer, 0, bytesSend); 
          bytesSend = lfs.Read(bytebuffer, 0, (int)lfs.Length); 

         } 
        } 
        catch (Exception ex) 
        { 

         MessageBox.Show(ex.Message); 
        } 
        ftpResponse.Close(); 
        ftpStream.Close(); 
        lfs.Close(); 
        ftpRequest = null; 

       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
       } 

      } 
     } 

     FTPManagerClass client; 
     private static string password = ""; 
     private static string username = ""; 
     private static string host = ""; 

     private FtpWebRequest ftpRequest = null; 
     private FtpWebResponse ftpResponse = null; 
     private Stream ftpStream = null; 


     public Form1() 
     { 
      InitializeComponent(); 
      connMgr = new ConnMgr(); 
      connMgr.StatusChanged += new ConnMgr.StatusChangedEventHandler(StatusChanged_Handler); 
     } 
     private ConnMgr connMgr; 
     private void button1_Click(object sender, EventArgs e) 
     { 
      if (txt_br_down.Text != "") 
      { 
       client.DownloadFile(@"/GP_FTP/ans.txt", @"/download"); 
       client = new FTPManagerClass("usr", "pwd", "ftp://ftp.tzf.com"); 
      } 

      else 
      { 
       MessageBox.Show("Ures mezo"); 
      } 
     } 






     private void txt_br_dw_1_TextChanged(object sender, EventArgs e) 
     { 

     } 

Соединение GPRS строит, но после подключения FTP имеет некоторые проблемы:

 private void btn_login_Click(object sender, EventArgs e) 
     { 

     } 

     private void btn_login_Click_1(object sender, EventArgs e) 
     { 
      if (!connMgr.Connected) 
      { 
       connMgr.Connect("pannon", ConnMgr.ConnectionMode.Synchronous, " ", " ", "net"); 
       txtLog.Text += "Sync connection successful\r\n"; 
      } 
      else 
      { 
       MessageBox.Show("No connection!"); 
      } 
    } 

     private void txtLog_TextChanged(object sender, EventArgs e) 
     { 

     } 
     private void StatusChanged_Handler(object sender, ConnMgr.StatusChangedEventArgs e) 
     { 
      connMgr.Timeout = 3000; 
      txtLog.Text += e.desc + "\r\n";   // Show current state's description 

      if (!connMgr.Waiting) 
       if (connMgr.Connected) 
        txtLog.Text += "Confirmed - We are now connected\r\n"; 
       else 
       { 
        txtLog.Text += "Confirmed - Connection instance has been released\r\n"; 
        // btnCancel.Enabled = false; 
        // btnConnect.Enabled = true; 
       } 

      if (e.connstatus == ConnMgr.ConnectionStatus.ExclusiveConflict) 
       MessageBox.Show("If using Activesync, check connection settings for 'Allow wireless connection ...' or remove from homebase."); 
     } 
     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

Нет выглядит аутентификация ok.There это не проблема!

Я сделал это:

try 
       { 
        client = new FTPManagerClass("usr", "pwd", "ftp://ftp.tzf.com"); 
       } 
       catch (Exception ex) 
       { 

        MessageBox.Show("Login"+ ex); 
       } 

Это нормально!

Но после этого: ctacke

  try 

      { 
       MessageBox.Show("before download"); 
       client.DownloadFile("/GP_FTP/ans.txt", "/download"); 
       MessageBox.Show("after download"); 
      } 

      catch (Exception ex1) 

      { 


       MessageBox.Show("file"+ ex1); 

      } 

Проблема теперь:. В client.DownloadFileSystem.nullreferenceException Теперь я понятия не имею :( это может быть какой-то жаль, что ...

Почему это нуль? client.DownloadFile(@"/GP_FTP/ans.txt", @"/download"); я попытался client.DownloadFile("/GP_FTP/ans.txt", "/download"); и client.DownloadFile("ans.txt", "/download"); и то же. Почему?

+0

Спасибо Жилю за редактирование! – user5494221

+0

Где во всем этом коде происходит исключение NullReferenceException? – ctacke

+0

'client.DownloadFile (@"/GP_FTP/ans.txt ", @"/download ");' – user5494221

ответ

0

Это не будет работать:

client.DownloadFile(@"/GP_FTP/ans.txt", @"/download"); 
client = new FTPManagerClass("usr", "pwd", "ftp://ftp.tzf.com"); 

Вы не можете выполнять операции над переменной, если вы не назначили что-то к нему еще - тогда вы получите NullReferenceException. new бит идет первым:

client = new FTPManagerClass("usr", "pwd", "ftp://ftp.tzf.com"); 
client.DownloadFile(@"/GP_FTP/ans.txt", @"/download"); 

Указание FTP-адрес и отправить имя пользователя, пароль перед тем пытается загрузить файл должен иметь больше смысла, тоже.

+0

Я попытался зайти на другую кнопку и после того, как подключиться (писать в текстовое поле) к FTP попытался загрузить-загрузить но все время идет в «Null reference exception». Я думаю, что проблемы нет! – user5494221

+0

Здесь может быть несколько проблем - существует ли 'NullReferenceException' все еще на' client.DownloadFile (@ "/ GP_FTP/ans.txt", @ "/ download"); '? –

+0

Да, я думаю, проблема в том, что соединение FTP создается. Я не знаю, что может быть другим типом для загрузки файла, если это не работает. – user5494221

 Смежные вопросы

  • Нет связанных вопросов^_^