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();
}
************************************************************************************************
1
using System;
2
using System.Collections.Generic;
3
using System.Windows.Forms;
4
using EnterpriseDT.Net.Ftp;
5
using System.Text;
6
using System.IO;
7
8
namespace 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
}
1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Text;
7
using System.IO;
8
using System.Xml;
9
using System.Threading;
10
using System.Windows.Forms;
11
12
namespace 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
天书 阅读(3506)
评论(1) 编辑 收藏 引用