ftp上传或下载过程中或提供一个事件,当上传一定比特流的时候就触发该事件,上传的比特数可以在此事件处理函数中处理,上传结束也会触发一个事件。
**********************************UpLoadFtp类************************************************
{
private FTPClient ftp;
ftp.BytesTransferred += new BytesTransferredHandler(ftp_BytesTransferred);
ftp.TransferCompleteEx += new TransferHandler(ftp_TransferCompleteEx);
public void MyUpload(String remotePath,String localfilepath,String remotefilename)
{
MyConnect();
try
{
ftp.ChDir(remotePath);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"提示信息");
}
try
{
FileInfo fi = new FileInfo(localfilepath);
ftp.TransferNotifyInterval = (int)((double)fi.Length / (double)100);
ftp.Put(localfilepath,remotefilename);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示信息");
}
}
void ftp_TransferCompleteEx(object sender, TransferEventArgs e)
{
TransferComplete.Invoke(sender, e);
}
public event BytesTransferredHandler BytesTransferred;
public event TransferHandler TransferComplete;
void ftp_BytesTransferred(object sender, BytesTransferredEventArgs e)
{
BytesTransferred.Invoke(sender, e);
}
}
**************************调用上面类里的公有事件本类中加事件处理函数**************************
uploadFtp.BytesTransferred += new EnterpriseDT.Net.Ftp.BytesTransferredHandler(uploadFtp_BytesTransferred);
uploadFtp.TransferComplete += new EnterpriseDT.Net.Ftp.TransferHandler(uploadFtp_TransferComplete);
void uploadFtp_TransferComplete(object sender, EnterpriseDT.Net.Ftp.TransferEventArgs e)
{
if (this.checkIsFormat.Checked)
{
Random ran = new Random();
this.fileNewName = curtype + "#" + cursuppler + "#" + curnetName + "#"
+ comboFileType.SelectedItem.ToString()
+ "#" + DateTime.Now + "#" + ran + "#"
+ "1.src";
uploadFtp.ReName(remoteFileName, fileNewName);
}
progressBar1.Value = 0;
lbFtpMessage.ForeColor = Color.Red;
lbFtpMessage.Text = "上传成功!";
}
void uploadFtp_BytesTransferred(object sender, EnterpriseDT.Net.Ftp.BytesTransferredEventArgs e)
{
this.progressBar1.Value = (int)(100 *((float)e.ByteCount / (float)localFileLength));
string str = String.Format("上传进度: {0}%", progressBar1.Value);
lbFtpMessage.ForeColor = Color.Black;
lbFtpMessage.Text = str;
Application.DoEvents();
}
************************************************************************************************
1using System;
2using System.Collections.Generic;
3using System.Windows.Forms;
4using EnterpriseDT.Net.Ftp;
5using System.Text;
6using System.IO;
7
8namespace BurEmluator
9{
10 class UpLoadFile
11 {
12 private String serverIp;
13 private String username;
14 private String password;
15 private FTPClient ftp;
16 private long transferNotifyInterval;
17
18 public long TransferNotifyInterval
19 {
20 get { return transferNotifyInterval; }
21 set { transferNotifyInterval = value; }
22 }
23
24 public UpLoadFile(string sip, string uname, string pwd)
25 {
26 this.serverIp = sip;
27 this.username = uname;
28 this.password = pwd;
29 ftp = new FTPClient();
30 ftp.BytesTransferred += new BytesTransferredHandler(ftp_BytesTransferred);
31 ftp.TransferCompleteEx += new TransferHandler(ftp_TransferCompleteEx);
32 }
33
34 void ftp_TransferCompleteEx(object sender, TransferEventArgs e)
35 {
36 TransferComplete.Invoke(sender, e);
37 }
38
39
40
41 public event BytesTransferredHandler BytesTransferred;
42 public event TransferHandler TransferComplete;
43
44 void ftp_BytesTransferred(object sender, BytesTransferredEventArgs e)
45 {
46 BytesTransferred.Invoke(sender, e);
47 }
48
49 public void MyUpload(String remotePath,String localfilepath,String remotefilename)
50 {
51 连接#region 连接
52 MyConnect();
53 #endregion
54 进入远程目录#region 进入远程目录
55 try
56 {
57 ftp.ChDir(remotePath);
58 }
59 catch (Exception ex)
60 {
61 MessageBox.Show(ex.Message,"提示信息");
62 }
63 #endregion
64 上传#region 上传
65 try
66 {
67 FileInfo fi = new FileInfo(localfilepath);
68
69 ftp.TransferNotifyInterval = (int)((double)fi.Length / (double)100);
70
71 ftp.Put(localfilepath,remotefilename);
72 }
73 catch (Exception ex)
74 {
75 MessageBox.Show(ex.Message, "提示信息");
76 }
77 #endregion
78 }
79 public void ReName(String upfilename,String newfilename)
80 {
81 try
82 {
83 ftp.Rename(upfilename, newfilename);
84 }
85 catch (Exception ex)
86 {
87 MessageBox.Show(ex.Message,"提示信息");
88 }
89 }
90 private void MyConnect()
91 {
92 连接#region 连接
93 try
94 {
95 ftp.RemoteHost = serverIp;
96 ftp.Connect();
97 }
98 catch (Exception ex)
99 {
100 MessageBox.Show(ex.Message, "提示信息");
101 }
102 #endregion
103 登陆#region 登陆
104 try
105 {
106 ftp.Login(username, password);
107 }
108 catch (Exception ex)
109 {
110 MessageBox.Show(ex.Message, "提示信息");
111 }
112 #endregion
113
114 ftp.ConnectMode = FTPConnectMode.PASV;
115 ftp.TransferType = FTPTransferType.BINARY;
116 }
117 }
118}
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Data;
5using System.Drawing;
6using System.Text;
7using System.IO;
8using System.Xml;
9using System.Threading;
10using System.Windows.Forms;
11
12namespace BurEmluator
13{
14 public partial class DataUpload : Form
15 {
16
17 private List<NeInfoLocal> m_NeList;
18 public List<NeInfoLocal> NeList
19 {
20 get
21 {
22 return m_NeList;
23 }
24 set
25 {
26 m_NeList = value;
27 }
28 }
29 private String ip;
30 private String username;
31 private String pwd;
32 private String remotepath;
33 private UpLoadFile uploadFtp;
34
35 private String curnetName;
36 private String curtype;
37 private String cursuppler;
38
39 private string remoteFileName;
40 private long localFileLength;
41 private string localFilePath;
42 private string localFileName;
43 private TreeNode curTN = null;
44 private string fileNewName = null;
45 private string isSucName = "0.src";
46 private string fileType;
47 private bool isRename = false;
48 public DataUpload()
49 {
50 InitializeComponent();
51 }
52 private void InitTreeView(int order)
53 {
54 PublicUse pubfun = new PublicUse();
55
56 bool bResult = pubfun.InitMTreeView(Netree, NeList, order);
57 if (!bResult)
58 {
59 MessageBox.Show("未取出网元信息,请稍候使用该功能!", "局数据仿真系统");
60 return;
61 }
62 }
63
64 private void DataUpload_Load(object sender, EventArgs e)
65 {
66 //网元
67 InitTreeView(1);
68 }
69
70 private void radType_CheckedChanged(object sender, EventArgs e)
71 {
72 InitTreeView(1);
73 }
74
75 private void radSupplier_CheckedChanged(object sender, EventArgs e)
76 {
77 InitTreeView(2);
78 }
79
80 private void radCity_CheckedChanged(object sender, EventArgs e)
81 {
82 InitTreeView(3);
83 }
84
85 private void butSelectFile_Click(object sender, EventArgs e)
86 {
87 string curWD = System.IO.Directory.GetCurrentDirectory();
88 OpenFileDialog fd = new OpenFileDialog();
89 if (fd.ShowDialog(this) == DialogResult.OK)
90 {
91 localFileName = fd.SafeFileName;
92 FileInfo fi = new FileInfo(fd.SafeFileName);
93 String path = fi.Directory.ToString();
94 this.localFilePath = path + "\\" + localFileName;
95 textFile.Text = localFilePath;
96
97 }
98 System.IO.Directory.SetCurrentDirectory(curWD);
99
100 }
101
102 private void Netree_MouseClick(object sender, MouseEventArgs e)
103 {
104 if(e.Button == MouseButtons.Left)
105 {
106 TreeNode tn = this.Netree.GetNodeAt(e.Location);
107
108 if (tn != null && tn.Bounds.Contains(e.Location))
109 {
110 if (tn.Nodes.Count == 0)
111 {
112 curTN = tn;
113 取网元名#region 取网元名
114 curnetName = tn.Text;
115 #endregion
116
117 根据网元名找设备类型和厂商#region 根据网元名找设备类型和厂商
118 GetTypeSuppler(curnetName, out curtype, out cursuppler);
119 #endregion
120
121 读配置文件,把文件类型放入文件类型链表#region 读配置文件,把文件类型放入文件类型链表
122 String[] fileTypeList;
123 fileTypeList = GetFileType(curtype, cursuppler);
124 #endregion
125
126 加载文件类型链表#region 加载文件类型链表
127 comboFileType.Items.Clear();
128 for (int i = 0; i < fileTypeList.Length; i++)
129 {
130 String ft = fileTypeList[i];
131 comboFileType.Items.Add(ft);
132 comboFileType.SelectedItem = comboFileType.Items[0];
133 }
134 #endregion
135
136 }
137 }
138 }
139 }
140 private void GetTypeSuppler(String nn, out String type, out String suppler)
141 {
142
143 foreach (NeInfoLocal ni in m_NeList)
144 {
145 if (ni.strNeNameEN.Equals(nn))
146 {
147 type = ni.strNeType;
148 suppler = ni.strNeSupplier;
149 return;
150 }
151 }
152 type = null;
153 suppler = null;
154 }
155 private String[] GetFileType(string type, string suppler)
156 {
157 String[] fileTypeList;
158 String res = null;
159 XmlDocument xmlDoc = new XmlDocument();
160 xmlDoc.Load("FileTyp.xml");
161 XmlNode node = xmlDoc.SelectSingleNode("FileType");
162 for (int i = 0; i < node.ChildNodes.Count; i++)
163 {
164 if (node.ChildNodes[i].Name.Equals(type))
165 {
166 for (int j = 0; j < node.ChildNodes[i].ChildNodes.Count; j++)
167 {
168 if (node.ChildNodes[i].ChildNodes[j].Name.Equals(suppler))
169 {
170 res = node.ChildNodes[i].ChildNodes[j].InnerText.ToString();
171 fileTypeList = res.Split(',');
172 return fileTypeList;
173 }
174 }
175 }
176 }
177 return null;
178 }
179 private void SetFtpInfo()
180 {
181 XmlDocument xmlDoc = new XmlDocument();
182 xmlDoc.Load("UpLoadFtp.xml");
183 XmlNode node = xmlDoc.SelectSingleNode("UpLoad");
184 for (int i = 0; i < node.ChildNodes.Count; i++)
185 {
186 if (node.ChildNodes[i].Name.Equals("IP"))
187 {
188 ip = node.ChildNodes[i].InnerText;
189 }
190 else if (node.ChildNodes[i].Name.Equals("userName"))
191 {
192 username = node.ChildNodes[i].InnerText;
193 }
194 else if (node.ChildNodes[i].Name.Equals("password"))
195 {
196 pwd = node.ChildNodes[i].InnerText;
197 }
198 else if (node.ChildNodes[i].Name.Equals("remotePath"))
199 {
200 remotepath = node.ChildNodes[i].InnerText;
201 }
202 }
203 }
204 private void button1_Click(object sender, EventArgs e)
205 {
206 lbFtpMessage.Text = "";
207 //初始化ftp信息
208 SetFtpInfo();
209 uploadFtp = new UpLoadFile(ip, username, pwd);
210 isRename = this.checkIsFormat.Checked;
211 if (this.textFile.Text.Length == 0)
212 {
213 MessageBox.Show("请选择要上传的文件", "信息提示");
214 }
215 else
216 {
217 if (isRename == true)
218 {
219 if (curTN == null)
220 {
221 MessageBox.Show("请选择网元", "提示信息");
222 return;
223 }
224 if(comboFileType.SelectedItem == null)
225 {
226 MessageBox.Show("请选择文件类型","信息提示");
227 return;
228 }
229 }
230
231 //上传
232 FileInfo fi = new FileInfo(localFilePath);
233 this.localFileLength = fi.Length;
234 uploadFtp.BytesTransferred += new EnterpriseDT.Net.Ftp.BytesTransferredHandler(uploadFtp_BytesTransferred);
235 uploadFtp.TransferComplete += new EnterpriseDT.Net.Ftp.TransferHandler(uploadFtp_TransferComplete);
236 if (this.checkIsFormat.Checked)
237 {
238 Random ran = new Random();
239 remoteFileName = curtype + "#" + cursuppler + "#" + curnetName + "#"
240 + comboFileType.SelectedItem.ToString()
241 + "#" + DateTime.Now + "#" + ran + "#"
242 + "0.src";
243 }
244 else
245 {
246 remoteFileName = localFileName;
247 }
248 uploadFtp.MyUpload(remotepath, localFilePath, remoteFileName);
249
250
251 }
252 }
253
254 void uploadFtp_TransferComplete(object sender, EnterpriseDT.Net.Ftp.TransferEventArgs e)
255 {
256 if (this.checkIsFormat.Checked)
257 {
258 Random ran = new Random();
259 this.fileNewName = curtype + "#" + cursuppler + "#" + curnetName + "#"
260 + comboFileType.SelectedItem.ToString()
261 + "#" + DateTime.Now + "#" + ran + "#"
262 + "1.src";
263 uploadFtp.ReName(remoteFileName, fileNewName);
264 }
265 progressBar1.Value = 0;
266 lbFtpMessage.ForeColor = Color.Red;
267 lbFtpMessage.Text = "上传成功!";
268 }
269
270 void uploadFtp_BytesTransferred(object sender, EnterpriseDT.Net.Ftp.BytesTransferredEventArgs e)
271 {
272 this.progressBar1.Value = (int)(100 *((float)e.ByteCount / (float)localFileLength));
273
274 string str = String.Format("上传进度: {0}%", progressBar1.Value);
275 lbFtpMessage.ForeColor = Color.Black;
276 lbFtpMessage.Text = str;
277 Application.DoEvents();
278 }
279
280 private void comboFileType_TextChanged(object sender, EventArgs e)
281 {
282
283 获取文件类型#region 获取文件类型
284 fileType = comboFileType.SelectedItem.ToString();
285
286
287 #endregion
288 }
289
290 private void butCancle_Click(object sender, EventArgs e)
291 {
292
293 this.Close();
294 }
295
296 }
297}
posted on 2008-10-31 10:04
天书 阅读(3482)
评论(1) 编辑 收藏 引用