我試圖做一個ftp上傳和下載,但它是所有的時間去Nullreference
錯誤。可能是因爲opennetcf.net.ftp
不是解決問題的最佳方法嗎?任何人都可以幫我解決這個問題嗎?ftp上傳/下載在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);
}
這是OK!
但經過這樣的: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.DownloadFile
System.nullreferenceException
現在我不知道:( 它可以是有些可惜的事......
這是爲什麼空?client.DownloadFile(@"/GP_FTP/ans.txt", @"/download");
我想client.DownloadFile("/GP_FTP/ans.txt", "/download");
和client.DownloadFile("ans.txt", "/download");
和相同的,爲什麼呢?
感謝Gilles的編輯! – user5494221
在所有這些代碼中哪裏是NullReferenceException發生? – ctacke
'client.DownloadFile(@「/ GP_FTP/ans.txt」,@「/ download」);' – user5494221