设为首页 收藏本站
查看: 892|回复: 0

FTP文件上传下载,获取文件列表功能

[复制链接]

尚未签到

发表于 2015-5-29 09:01:14 | 显示全部楼层 |阅读模式
  
  窗体设计器



  1         #region Windows 窗体设计器生成的代码
  2
  3         ///
  4         /// 设计器支持所需的方法 - 不要
  5         /// 使用代码编辑器修改此方法的内容。
  6         ///
  7         private void InitializeComponent()
  8         {
  9             this.components = new System.ComponentModel.Container();
10             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmList));
11             this.btnDown = new System.Windows.Forms.Button();
12             this.btnGetList = new System.Windows.Forms.Button();
13             this.treeView1 = new System.Windows.Forms.TreeView();
14             this.imageList1 = new System.Windows.Forms.ImageList(this.components);
15             this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
16             this.下载浏览ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
17             this.webBrowser1 = new System.Windows.Forms.WebBrowser();
18             this.文件上传ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
19             this.contextMenuStrip1.SuspendLayout();
20             this.SuspendLayout();
21             //
22             // btnDown
23             //
24             this.btnDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
25             this.btnDown.Location = new System.Drawing.Point(14, 597);
26             this.btnDown.Name = "btnDown";
27             this.btnDown.Size = new System.Drawing.Size(75, 23);
28             this.btnDown.TabIndex = 0;
29             this.btnDown.Text = "下载文件";
30             this.btnDown.UseVisualStyleBackColor = true;
31             //
32             // btnGetList
33             //
34             this.btnGetList.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
35             this.btnGetList.Location = new System.Drawing.Point(95, 597);
36             this.btnGetList.Name = "btnGetList";
37             this.btnGetList.Size = new System.Drawing.Size(75, 23);
38             this.btnGetList.TabIndex = 0;
39             this.btnGetList.Text = "获取文件列表";
40             this.btnGetList.UseVisualStyleBackColor = true;
41             this.btnGetList.Click += new System.EventHandler(this.btnGetList_Click);
42             //
43             // treeView1
44             //
45             this.treeView1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
46                         | System.Windows.Forms.AnchorStyles.Left)));
47             this.treeView1.ImageIndex = 0;
48             this.treeView1.ImageList = this.imageList1;
49             this.treeView1.Location = new System.Drawing.Point(12, 12);
50             this.treeView1.Name = "treeView1";
51             this.treeView1.SelectedImageIndex = 0;
52             this.treeView1.Size = new System.Drawing.Size(207, 579);
53             this.treeView1.TabIndex = 1;
54             this.treeView1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView1_MouseDown);
55             //
56             // imageList1
57             //
58             this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
59             this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
60             this.imageList1.Images.SetKeyName(0, "folderopen.ico");
61             //
62             // contextMenuStrip1
63             //
64             this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
65             this.下载浏览ToolStripMenuItem,
66             this.文件上传ToolStripMenuItem});
67             this.contextMenuStrip1.Name = "contextMenuStrip1";
68             this.contextMenuStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
69             this.contextMenuStrip1.Size = new System.Drawing.Size(153, 70);
70             //
71             // 下载浏览ToolStripMenuItem
72             //
73             this.下载浏览ToolStripMenuItem.Name = "下载浏览ToolStripMenuItem";
74             this.下载浏览ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
75             this.下载浏览ToolStripMenuItem.Text = "下载浏览";
76             this.下载浏览ToolStripMenuItem.Click += new System.EventHandler(this.下载浏览ToolStripMenuItem_Click);
77             //
78             // webBrowser1
79             //
80             this.webBrowser1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
81                         | System.Windows.Forms.AnchorStyles.Left)
82                         | System.Windows.Forms.AnchorStyles.Right)));
83             this.webBrowser1.Location = new System.Drawing.Point(241, 12);
84             this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
85             this.webBrowser1.Name = "webBrowser1";
86             this.webBrowser1.Size = new System.Drawing.Size(553, 579);
87             this.webBrowser1.TabIndex = 3;
88             //
89             // 文件上传ToolStripMenuItem
90             //
91             this.文件上传ToolStripMenuItem.Name = "文件上传ToolStripMenuItem";
92             this.文件上传ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
93             this.文件上传ToolStripMenuItem.Text = "文件上传";
94             this.文件上传ToolStripMenuItem.Click += new System.EventHandler(this.文件上传ToolStripMenuItem_Click);
95             //
96             // frmList
97             //
98             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
99             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
100             this.ClientSize = new System.Drawing.Size(806, 632);
101             this.Controls.Add(this.treeView1);
102             this.Controls.Add(this.webBrowser1);
103             this.Controls.Add(this.btnGetList);
104             this.Controls.Add(this.btnDown);
105             this.MaximizeBox = false;
106             this.MinimizeBox = false;
107             this.Name = "frmList";
108             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
109             this.Text = "公告下载浏览";
110             this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
111             this.Load += new System.EventHandler(this.Form1_Load);
112             this.contextMenuStrip1.ResumeLayout(false);
113             this.ResumeLayout(false);
114
115         }
116
117         #endregion
操作Ftp类


DSC0000.gif DSC0001.gif View Code


  1 namespace FtpDown
  2 {
  3     class FtpDownLoad
  4     {
  5         private string password;
  6         public string Password
  7         {
  8            get { return password; }
  9            set { password = value; }
10         }
11         private string userName;
12         public string UserName
13        {
14           get { return userName; }
15           set { userName = value; }
16        }
17         private string ftpServerIP;
18         public string FtpServerIP
19        {
20           get { return ftpServerIP; }
21           set { ftpServerIP = value; }
22        }
23
24         public FtpDownLoad( string userName,string password)
25         {
26             this.password = password;
27             this.userName=userName;
28         }
29         #region ---------连接ftp ConnFtp(string ftpServerIP)
30         ///
31         /// 连接ftp
32         ///
33         public void ConnFtp(string ftpServerIP)
34         {
35             try
36             {
37                 FtpWebRequest ftpRequest = null;
38                 ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpServerIP));//创建实现文件传输协议ftp客户端
39                 ftpRequest.UseBinary = true;//指定文件传输类型
40                 ftpRequest.Credentials = new NetworkCredential(userName, password);//获取设置与ftp服务器通信凭证
41             }
42             catch (Exception ex)
43             {
44                 MessageBox.Show(ex.Message);
45             }
46         }
47         #endregion
48
49         #region ---------获取文件详细目录 string[] GetDetailList(string ftpServerIP)
50         ///
51         /// 获取文件详细目录
52         ///
53         /// ftppath ftp上文件路径 如:ftp://192.168.1.1//wangqihe
54         ///
55         public string[] GetDetailList(string ftppath)
56         {
57             try
58             {
59                 StringBuilder list = new StringBuilder();//存放文件名,大小 等信息
60                 FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftppath));//创建实现文件传输协议ftp客户端
61                 request.Credentials = new NetworkCredential(userName, password);//获取设置与ftp服务器通信凭证
62                 request.KeepAlive = false;
63                 request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;//表示获取ftp文件详细信息
64                 WebResponse reponse = request.GetResponse();
65                 long filelength = reponse.ContentLength;//获取文件长度
66                 StreamReader reader = new StreamReader(reponse.GetResponseStream(), System.Text.Encoding.Default);
67                 string line = reader.ReadLine();
68                 while (line != null)
69                 {
70                     list.Append(line);
71                     list.Append("龘");//用不常用字方便进行分割
72                     line = reader.ReadLine();
73                 }
74                 reader.Close();
75                 reponse.Close();
76                 return list.ToString().Split('龘');
77             }
78             catch (Exception ex)
79             {
80                 return null;
81                 throw;
82             }
83         }
84         #endregion
85
86         #region ---------只获取ftp文件 string[] GetDirectoryList(string path)
87         ///
88         /// 只获取ftp文件
89         ///
90         ///
91         public string[] GetDirectoryList(string path)
92         {
93             string[] list = GetDetailList(path);
94             string m = "";
95             for (int i = 0; i < list.Length - 1; i++)
96             {
97                 int dirPos = list.IndexOf("");
98                 if (dirPos > 0)
99                 {
100                     /*判断 Windows 风格*/
101                     m += list.Substring(dirPos + 5).Trim() + "\n";
102                 }
103                 else if (list.Trim().Substring(0, 1).ToUpper() == "D")
104                 {
105                     /*判断 Unix 风格*/
106                     string dir = list.Substring(54).Trim();
107                     if (dir != "." && dir != "..")
108                     {
109                         m += dir + "\n";
110                     }
111                 }
112             }
113             return m.Split('\n');
114         }
115         #endregion
116
117         #region ---------判断文件是否为文件夹 bool IsFolder(string strName)
118         public bool IsFolder(string strName)
119         {
120             string m = string.Empty;
121             int dirPos = strName.IndexOf("");
122             if (dirPos > 0)
123             {
124                 /*判断 Windows 风格*/
125                 m += strName.Substring(dirPos + 5).Trim() + "\n";
126                 return true;
127             }
128             else if (strName.Trim().Substring(0, 1).ToUpper() == "D")
129             {
130                 /*判断 Unix 风格*/
131                 string dir = strName.Substring(54).Trim();
132                 if (dir != "." && dir != "..")
133                 {
134                     m += dir + "\n";
135                     return true;
136                 }
137             }
138             return false;
139         }
140         #endregion
141
142         #region ---------单个文件下载方法 void download(string adss, string ftpadss)
143         ///
144         /// 单个文件下载方法
145         ///
146         /// 保存文件的本地路径
147         /// 下载文件的FTP路径
148         public void download(string adss, string ftpadss)
149         {
150             try
151             {
152                 //FileMode常数确定如何打开或创建文件,指定操作系统应创建新文件。
153                 //FileMode.Create如果文件已存在,它将被改写
154                 FileStream outputStream = new FileStream(adss, FileMode.Create);
155                 FtpWebRequest downRequest = (FtpWebRequest)WebRequest.Create(new Uri(ftpadss));
156                 //设置要发送到 FTP 服务器的命令
157                 downRequest.Credentials = new NetworkCredential(userName, password);
158                 downRequest.Method = WebRequestMethods.Ftp.DownloadFile;
159                 FtpWebResponse response = (FtpWebResponse)downRequest.GetResponse();
160                 Stream ftpStream = response.GetResponseStream();
161                 long cl = response.ContentLength;//ftp上获取文件的长度
162                 int bufferSize = 2048;//一次获取文件大小 为 2M
163                 int readCount;
164                 byte[] buffer = new byte[bufferSize];//设置缓存区
165                 readCount = ftpStream.Read(buffer, 0, bufferSize);//从当前流中读取字节到缓存 buffer中  readCount读取字节数
166                 while (readCount > 0)//读取字节数大于O循环读取
167                 {
168                     outputStream.Write(buffer, 0, readCount);//从缓存区读取字节到流中
169                     readCount = ftpStream.Read(buffer, 0, bufferSize);
170                 }
171                 ftpStream.Close();
172                 outputStream.Close();
173                 response.Close();
174             }
175             catch (Exception ex)
176             {
177                 MessageBox.Show(ex.Message);
178             }
179         }
180         #endregion
181         ///
182         /// FTP地址路径
183         /// 我们所选择的文件或者文件夹名字
184         /// 要发送到FTP服务器的命令
185         ///
186         public string[] ftp(string ftpads, string name, string type)
187         {
188             WebResponse webresp = null;
189             StreamReader ftpFileListReader = null;
190             FtpWebRequest ftpRequest = null;
191             try
192             {
193                 ftpRequest = (FtpWebRequest)WebRequest.Create(new Uri(ftpads + name));
194                 ftpRequest.UseBinary = true;
195                 ftpRequest.Credentials = new NetworkCredential("wangqihe", "123456");
196                 ftpRequest.Method = type;
197                 webresp = ftpRequest.GetResponse();
198                 ftpFileListReader = new StreamReader(webresp.GetResponseStream(), Encoding.Default);
199             }
200             catch (Exception ex)
201             {
202                 ex.ToString();
203             }
204             StringBuilder str = new StringBuilder();
205             string line = ftpFileListReader.ReadLine();
206             while (line != null)
207             {
208                 str.Append(line);
209                 str.Append("鼯");
210                 line = ftpFileListReader.ReadLine();
211             }
212             string[] fen = str.ToString().Split('鼯');
213             return fen;
214         }
215
216         #region ---------下载文件下的所有文件 void downftp(string ftpads, string name, string Myads)
217         ///
218         /// 下载方法KO
219         ///
220         /// FTP路径
221         /// 需要下载文件路径
222         /// 保存的本地路径
223         public void downftp(string ftpads, string name, string Myads)
224         {
225             string downloadDir = Myads + name;
226             string ftpdir = ftpads + name;
227             string[] fullname = ftp(ftpads, name, WebRequestMethods.Ftp.ListDirectoryDetails);
228             //判断是否为单个文件
229             if (fullname.Length

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71732-1-1.html 上篇帖子: ant中get, ftp上传下载删除的用法 下篇帖子: 一个FTP客户端的C#代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表