文件上传下载

上传人:F****n 文档编号:88095798 上传时间:2019-04-18 格式:PPT 页数:36 大小:4.50MB
返回 下载 相关 举报
文件上传下载_第1页
第1页 / 共36页
文件上传下载_第2页
第2页 / 共36页
文件上传下载_第3页
第3页 / 共36页
文件上传下载_第4页
第4页 / 共36页
文件上传下载_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《文件上传下载》由会员分享,可在线阅读,更多相关《文件上传下载(36页珍藏版)》请在金锄头文库上搜索。

1、第8章 FTP文件上传下载,8.1 FTP概述,8.2 FTP客户端开发相关类,8.3 FTP文件上传下载器的制作,8.4 FTP上传下载软件测试,本章教学目的、要求 理解文件传输的基本概念以及FTP服务的工作过程。 掌握FTP客户端编程涉及的相关类。 熟悉FTP上传下载器的制作。 本章教学重点及难点 FTP客户端编程涉及的相关类。 FTP上传下载器的制作。,8.1 FTP概述,8.1.1 文件传输的基本概念 文件传输服务是由FTP应用程序提供的,而FTP应用程序遵循的是TCP/IP中的文件传输协议(File Transfer Protocol,即FTP),它允许用户将文件从一台计算机传输到另

2、一台计算机,并且能保证传输的可靠性。,8.1.2 FTP服务的工作过程,FTP协议采用典型的C/S模式,在传输层选择TCP协议。图8.1描述了文件传输的工作过程。,8.1.3 匿名FTP服务,匿名FTP(anonymous FTP)服务的实质是:提供服务的机构在它的FTP服务器上建立一个公开账户(通常为Anonymous),并赋予该账户访问公共目录的权限,以便提供免费的服务。如果用户要访问提供匿名服务的FTP服务器,不需要输入用户名和密码。如果需要输入它们的话,也是用系统默认的公开账户,比如“anonymous”作为用户名,密码为空;有些FTP服务器可能要求用户用自己的电子邮件地址作为密码。,

3、8.2 FTP客户端开发相关类,8.2.1 FtpWebRequest类 FtpWebRequest类用于实现FTP客户端。若要获得FtpWebRequest的实例,需使用Create方法,该方法有以下两种重载形式。 1. FtpWebRequest.Create(String) 例如: FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(“ftp:/myFTPServer/myFile“); 2. FtpWebRequest.Create(Uri) 例如: Uri siteUri = new Uri(“ftp:/myFTPSe

4、rver/myFile“); FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(siteUri);,8.2.1 FtpWebRequest类,表8-1和表8-2分别列出了FtpWebRequest类的常用属性和方法。,8.2.1 FtpWebRequest类,表8-2 FtpWebRequest类的常用方法,8.2.1 FtpWebRequest类,发送命令是使用FtpWebRequest对象。以下代码新建FtpWebRequest对象,并设置常用属性: String ftpUriString = ”ftp:/”+ftpSer

5、verIP+“/”; NetworkCredential networkCredential = new NetworkCredential(UserName, Password); /根据服务器信息创建FtpWebRequest类的对象 FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(ftpUriString); /提供身份验证信息 request.Credentials = networkCredential; /设置请求完成之后是否保持到FTP服务器的控制连接,默认值为True request.KeepAlive =

6、 true; /设置传输的数据类型 request.UseBinary = true; /设置所要执行的FTP命令。假设此处为显示指定路径下的文件列表 request.Method=WebRequestMethods.Ftp.ListDirectoryDetails;,8.2.2 FtpWebResponse类,FtpWebResponse类用于封装FTP服务器对请求的响应。FtpWebResponse对象提供操作的状态以及从服务器下载的所有数据。获取FTP响应时,需通过调用FtpWebRequest对象的GetResponse方法获取。返回的对象必须强制转换为FtpWebResponse.

7、关键代码为: FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(ftpUriString); FtpWebResponse response = (FtpWebResponse)request.GetResponse( ); ,8.2.2 FtpWebResponse类,表8-3和表8-4分别列出了FtpWebResponse类的常用属性和方法。,8.2.3 NetworkCredential类,在System.Net命名空间下,有一个NetworkCredential类。该类用于提供客户端身份验证机制的凭据。Network

8、Credential类是为基于密码的身份验证方案(如基本、简要、NTLM和Kerberos)提供凭据的基类,不支持基于公钥的身份验证方法,如安全套接字层(SSL)客户端身份验证。当需要验证访问权限时,我们需要使用这个类提供FTP服务器需要的用户名和密码,用法为: NetworkCredential myCredentials = new NetworkCredential(“FTP用户名”, “密码“);,8.2.3 NetworkCredential类,表8-5列出了NetworkCredential类的常用属性。,8.3 FTP文件上传下载器的制作,8.3.1FTP工具常用功能及工作流程

9、在使用FTP工具时,首先要登录服务器,验证登录用户是否合法。如果登录成功,便可以上传本地文件或文件夹,同时也可以管理FTP服务器端文件,包括下载、删除文件以及变更、访问、重命名目录、创建新目录等。通常FTP工具的工作流程如图8.2所示。,8.3.2 FTP客户端界面设计,根据图8.2的流程,设计本章FTP文件上传下载软件的界面如图8.3所示。,8.3.2 FTP客户端界面设计,软件工程名为“SelftpUpDownloader”,程序界面上各控件的属性描述见表8-6。,8.3.4 各功能模块代码,1. 登录和注销 本软件的登录界面如图8.4所示。,8.3.4 各功能模块代码,类似这样的功能主要

10、通过下面的界面控制代码来实现。 以下是登录FTP服务器的代码。 因为FTP协议是基于TCP的,又由于TCP连接的无状态性,每一次对FTP访问后,连接会自动断开,故注销退出登录的功能很简单,只要实现一些界面效果的控制就行了,其代码为。,8.3.4 各功能模块代码,2. 程序与FTP服务器的交互 创建FtpWebRequest对象: private FtpWebRequest CreateFtpWebRequest(string uri, string requestMethod) FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Creat

11、e(uri); request.Credentials = networkCredential; request.KeepAlive = true; request.UseBinary = true; request.Method = requestMethod; return request; 获取服务器返回的响应体。,8.3.4 各功能模块代码,3. 显示资源列表 为了能让用户直观地看到FTP服务器上的资源,客户端必须动态显示当前目录下的资源列表。本程序编写了ShowFtpFileAndDirectory( )方法显示FTP上的文件和目录,其完整实现的源代码。,8.3.4 各功能模块代码,

12、客户端通过向服务器“上送”WebRequestMethods.Ftp.ListDirectoryDetails方法,获取服务器返回的、包装了其上全部资源详细信息的响应体。在解析这个响应体生成的文件流时,客户端会将目录名和文件名加以区分,在每个目录名之前加上 目录 标记,其界面显示效果如图8.5所示。,8.3.4 各功能模块代码,4. 变更访问目录 FTP客户端支持用户变更当前目录,与操作【我的电脑】资源管理器类似,双击目录名进入相应的文件夹,双击“返回上层目录”退回到浏览过的上一级文件夹,如图8.5。这样用户就可以地访问FTP上的所有信息资源了。 变更目录的模块代码。,8.3.4 各功能模块代

13、码,5. 上传文件 向服务器上传文件的代码。 GetUriString( )方法的实现过程如下: private string GetUriString(string fileName) string uri = string.Empty; if (currentDir.EndsWith(“/“) uri = ftpUriString + currentDir + fileName; else uri = ftpUriString + currentDir + “/“ + fileName; return uri; ,8.3.4 各功能模块代码,6. 下载文件 FTP文件下载的原理与上传类似,

14、只不过向服务器上送的方法命令不同,为WebRequestMethods.Ftp.DownloadFile,打开的数据通道为下载流responseStream,其代码为。 GetSelectedFile( )方法的实现过程如下: private string GetSelectedFile() string filename = “; if (!(lstbxFtpResrcs.SelectedIndex = -1 | lstbxFtpResrcs.SelectedItem.ToString().Substring(0, 4) = “目录“) string namefield = lstbxFtp

15、Resrcs.SelectedItem.ToString().Split( ); filename = namefield0; return filename; ,8.3.4 各功能模块代码,7. 删除文件 为了安全起见,一般的FTP服务器都不对普通用户开放删除功能,但本章软件将删除文件的功能也一并实现,其代码为。 8. 【关于】对话框 与其他应用软件一样,FTP客户端也有声明程序版本和版权的【关于】对话框,设计这个对话框如图8.6所示。,8.3.5 程序试运行,笔者在自己单位的局域网内运行这个程序,FTP服务器的IP为“ 192.168.101.3”,匿名登录,效果如图8.7所示。,8.4

16、FTP上传下载软件测试,选用笔者收藏的两张精美的美人鱼图片做测试用文件,文件位于【我的文档】【图片收藏】中,如图8.8所示。,8.4 FTP上传下载软件测试,(1) 上传文件 启动FTP上传下载器,双击进入自己的文件夹目录,如图8.9所示。,8.4 FTP上传下载软件测试,单击【上传】按钮,弹出【打开】对话框,选择自己电脑上收藏的图片文件后,单击【打开】,开始上传文件,如图8.10所示。,8.4 FTP上传下载软件测试,上传完毕,出现“上传成功!”消息框,点【确定】,可以在当前目录下看到刚刚传上服务器的文件,如图8.11中框出。,8.4 FTP上传下载软件测试,(2) 下载文件 选中刚才传上服务器的一张图片,单击【下载】按钮,如图8.12所示。,8.4 FTP上传下载软件测试,在弹出的【另存为】对话框中,选择文件的保存路径,这里选择保存到【我的文档】,如图8.13所示。,8.4 FTP上传下载软件测试,用同样的方法保存另一张图片,操

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号