1. 怎样给FTP设置指定的用户名访问和目录
在桌面上右击“我的电脑”,执行“管理”命令,在“计算机管理”窗口的左窗格中依次展开“系统工具”→“本地用户和组”目录,单击选中“用户”选项。在右侧窗格中单击右键,执行“新用户”命令。在打开的“新用户”对话框中填写用户名(如hanjiang),并设定密码。然后取消“用户下次登录时需更改密码”复选框,并勾选“用户不能更改密码”和“密码永不过期”复选框,单击“创建”按钮完成该用户的添加。重复这一过程添加其他用户,最后单击“关闭”按钮即可。
为方便对这些用户的管理,最好将他们放入一个专门的组中。例如我们可以创建一个“FTPUsers”组:在“计算机管理”窗口的目录树中单击选中“组”选项,然后在右侧窗格中单击右键,执行“新建组”命令,并将该组命名为“FTPUsers”。接着依次单击“添加”→“高级”→“立即查找”按钮,将刚才创建的用户全部添加进来,最后依次单击“创建”→“结束”按钮。
然而事情并没有完,因为上述创建的用户默认隶属于“Users”组,也就是说他们拥有对大部分资源的浏览权限。为了实现对特定资源的有效管理,需要将这些用户从“Users”组中删除。在“计算机管理”窗口的右侧窗格中双击“Users”选项,用鼠标拖选所有刚添加的用户并单击“删除”按钮即可。 设置独立权限
这里的权限设置需要分两部分来进行,即对FTP服务器主目录的权限设置和对各个用户文件夹的权限设置。假设FTP服务器的主目录路径为“G:/FTPServer”,我们先来取消“FTPUsers”组的用户对“FTPServer”文件夹的“写入 ”权限。右击“FTPServer”文件夹,执行“属性”命令。在打开的“FTPServer 属性”对话框中切换至“安全”选项卡下,然后依次单击“添加”→“高级”→“立即查找”按钮,单击选中“FTPUsers”组并依次单击“确定”按钮回到“FTPServer 属性”对话框。接着在“FTPUsers的权限”列表框中勾选“拒绝写入”复选框。为了使“拒绝写入”权限仅对“FTPServer”文件夹有效,还需要单击“高级”按钮,在“FTPServer的高级安全设置”对话框中双击“权限列表”中的“拒绝FTPUsers写入”选项,打开“FTPServer的权限设置”对话框。在“应用到”下拉列表中选中“只有该文件夹”选项,连续单击“确定”按钮完成设置(如图1)。
接着我们为每个用户创建独立的文件夹(以用户名命名),并针对每个文件夹赋予相应用户适当的权限。以文件夹“hanjiang”为例,在“hanjiang 属性”对话框的“安全”选项卡下将用户“hanjiang”添加进来,并赋予其读取和写入的权限。同理,对于其他文件夹,也只赋予相应用户读取和写入的权限。
小提示:需要受到权限保护的文件夹必须在NTFS分区中创建,FAT32分区内的资源无法设置权限。 至此,设置工作就全部结束了。在任意一台机器上以用户“hanjiang”的身份登录FTP服务器,你会发现该用户只能在“hanjiang”文件夹中任意读写,而无法看到主目录和其他用户目录的内容。
2. 如何设置FTP服务器
FTP服务器的架设
在我们的实际网络生活中,特别是宽带网接入之后,FTP服务器作为文件的传输和共享工具得到广泛应用。FTP服务器在文件的传输上性能稳定,占用系统资源小,而且传输速度快,现在网上已经有很多的FTP服务器可供使用,而自己架设一个FTP服务器也很容易,下面介绍两种主流的FTP架构方式。
1.利用微软公司的IIS
微软的IIS功能非常强大,它除了提供WWW服务之外,还提供FTP的服务,利用它一样很容易就能架设一个功能卓越的FTP服务器。
IIS的安装前面已经讲解过,下面我们一起来看看通过设置IIS来架设FTP服务器的几个步骤。
第一步:启动IIS,并启动IIS上的FTP服务。在默认的情况下,此时你的FTP服务器已经搭建好,并且可以立即登录,但是该FTP中没有任何文件。
第二步:鼠标右击IIS中的“默认FTP站点”项,选择“属性”菜单,即可出现如图19的对话框。
第三步:选择“主目录”的标签,在FTP站点目录的“本地路径”处填上你要设置的共享文件路径。默认情况下,此处的文件夹位置为“C:\Inetpub\Ftproot”,你如果临时想改变共享目录,随时都可在此处修改(如图20),以后别人登录你的FTP服务器时显示的文件列表就是在这个目录中。
第三步:在“主目录”的标签处,你还可设置FTP服务器的文件访问权限,分别有读取、写入和日志访问,安全起见,这里的写入权限一般不选,保证匿名用户不能随意对你文件进行操作。
第四步:设置登录的用户。如果你愿意提供“匿名”的访问权限,还需在“安全标签”处选择上“允许匿名连接”(如图21)。此外,你还可从Windows系统帐号中选择FTP服务器的特殊帐号,当然也可以自己任意设置用户名和密码。
第五步:在“消息”标签处,有“欢迎”、“退出”和“最大连接数”3个输入框,分别代表别人在登录、退出时FTP服务器上给出的提示信息,你可根据自己的需要设置。此外,最大连接数是设置同时连接本地FTP的最大主机台数(如图22)。
第六步:在“FTP站点”的标签处设置FTP标识,包括说明、IP地址和端口,这里一般不需要改动,按照默认选择即可(如图23)。此外,在“C:\Winnt\System32\Logfiles”目录中你还可以看到连接上你FTP的IP、时间等日志信息。
此时,利用IE或者任何一款FTP的客户端软件即可登录你架设好的FTP站点。
2.利用Serv-U
在FTP服务器的搭建中,Serv-U是目前使用比较多的工具之一。它设置简单,功能强大,而且非常稳定,总体上来说上它比IIS附带的FTP服务器略胜一筹。它适用于所有的Windows版本,是一款共享软件,可以让用户免费使用一个月。
第一步:Serv-U的下载和安装。
目前Serv-U的最高版本为4.0,文件大小为2.9MB,它的下载站点之一为“http://www.download.com.cn/show.phtml?action=detail&id=484”。
点击下载的可执行文件即可开始安装了,安装过程很简单,所有设置保持默认值就可以,按“Next”完成每一步(如图24)。安装完毕,在Windows的桌面上就出现Serv-U的图标,双击Serv-U图标,出现Serv-U主窗口,点击主界面右边窗口的“Start server”即可启动FTP服务器 。
第二步:Serv-U的配置。
在Serv-U的安装完成之后即可出现配置向导,可以通过这个向导来对它进行配置,主要步骤如下。
A.安装程序首先启动一个设置向导帮助你设置FTP服务器,点击“Next”继续。
B.系统弹出输入IP的对话框,此项需要填入你准备为此FTP服务器绑定的IP地址。除非你的计算机有多个固定的IP地址,并且你只想其中一个被FTP服务器所使用,否则,建议不管你是否有固定的IP地址,都将此项保留为空(即让系统自动侦测),点击“Next”(如图25)。
C.输入Domain name(域名)。此处填入你FTP服务器的域名。但域名由DNS解析而不是由这里决定,因此实际上你可以填入任意内容,比如像“我的个人FTP服务器”这种对此FTP进行说明的文字。
D.输入FTP访问的端口号,一般保持默认的21即可。
E.匿名用户的创建和访问目录的设定。首先向导会提示你是否要创建匿名帐号,这里选择是,如果选择不,则用户需要用户名和密码才能访问FTP服务器。接下来安装向导提示输入匿名用户的主目录(Anonymous home directory),此处按照需要来设定匿名用户访问硬盘的位置。
F.选择匿名用户是否将其限制在主目录里,如果选择是,则用户只能访问其主目录及以下的目录树;如果选择否,则可以访问其主目录的同级或更高级的目录树。从安全角度考虑,一般建议选是。
G.创建新用户和访问目录。按照向导的提示一步一步创建新用户并输入密码(如图26),接着指定该用户可访问的目录和用户权限即可。
到这里,你的个人FTP就已经搭建完成了。不过这还只能实现Serv-U赋予的默认功能和权限,要真正让这个服务器能被你自己随心所欲地控制和管理,则还需要经过以下后续的操作,这主要包括如下几点。
A.对FTP用户的管理
欲增加一个新用户(包括增加Anonymous用户),则在Serv-U的一个域中选中Users(用户),然后单击右键,进入New User(新用户),依次根据提示为它设置好User Name(用户名)、Password(密码)、Home directory(主目录)等即可完成(如图27)。
欲删除一个用户,则在此用户上单击右键,选Delete User(删除用户)即可。
B.对目录权限的管理
在Serv-U左边框架中选中用户名,再在右边框架中进入Dir Access(目录存取)窗口,然后在列表中选中相应目录后,就可在窗口的右侧更改当前用户对它的访问权限了(如图28)。
文件的属性主要包括:
Read(读):对文件进行读操作(复制、下载,不含查看)的权力。
Write(写):对文件进行写操作(上传)的权力。
Append(附加):对文件进行写操作和附加操作的权力。
Delete(删除):对文件进行删除(上传、更名、删除、移动)操作的权力。
Execute(执行):直接运行可执行文件的权力。
List(列表):对文件和目录的查看权力。
Create(建立):建立目录的权力。
Remove(移动):对目录进行移动、删除和更名的权力。
Inherit(继承):如勾选中此项,则以上设置的属性将对当前Path(目录)及其下的整个目录树起作用;否则就只对其当前目录有效。
C.其他设置
在Local server下的Setting处还可设置服务器的一些通用信息。
在“max no.of users”处,设定同时登录该服务器的最大用户数。
在Max.Speed处根据自己电脑的配置,设置用户最大下载速度。
选择“Block users who connect more than XX times within YY seconds for ZZ minutes”复选框并设置相应的数值,可以防止有些恶意用户为达到攻击目的在短时间内对该服务器的频繁登录。
选择“Delete partially uploaded files”复选框,可以自动删除上传失败后留在服务器上不完整文件。如果不要选中这项,就能让Serv-U支持断点上传功能(如图29)。
3.架设FTP服务器的其他方式。
A.WS_FTP Server。这是一套非常有特色的FTP Server程序。它有简单而强大的图形接口。设置起来比较容易,可以在Win9X/NT/2000/XP系统下使用,是一个共享的英文软件,文件大小为3.3MB,下载站点之一:http://www.skycn.com/soft/1296.html。
B.FileZilla Server。作为一个小巧、可*的FTP服务器软件,它配置简单,功能比较强大,适合Windows系列中的所有版本,文件大小为637kB,同时它是完全免费的软件,它的汉化版下载站点之一:http://www.skycn.com/soft/8091.html。
C.TYPSoft FTP Server汉化版。由于该软件经过汉化,因此使用起来很容易上手,是一个非常适合初学者的FTP服务器端软件,它配置简单,也能方便地管理用户,软件大小只有480kB,是一款免费软件,它的下载站点之一:http://www.skycn.com/soft/8335.html。
WWW服务器和FTP的访问途径
WWW的访问都可使用IE或其他浏览器来实现,例如我们经常看到的Natscape和Opera等。由于它的访问很容易,这里就不再详细讨论。
FTP的访问一般有两种方式,介绍如下:
A.直接利用IE登录FTP。现在我们正在使用的IE也可作为登录FTP的工具了,跟浏览网页一样,只需要将地址前面的HTTP改为FTP即可,例如访问自己的FTP,可以在浏览器中输入ftp://localhost(如图30),这时是匿名访问方式,如果用IE登录FTP时需用户名和密码,则可以右键调出登录的菜单(如图31),在对话框中输入用户名和密码即可。IE登录FTP服务器之后,FTP服务器上的文件跟本机上的文件一样,可以对其进行复制和粘贴等操作。
B.利用专用的软件登录FTP。此类软件有很多,比较着名的有FlashFXP、CuteFTP、LeapFTP等。
个人觉得LeapFTP很不错,操作简单,占用资源也很小,它的用法分步介绍如下。
第一步:LeapFTP的下载与安装。
目前LeapFTP较新的版本为2.7.2,是一个共享软件,LeapFTP v2.7.2.592的汉化版可以去http://www.skycn.com/soft/711.html下载。它的安装非常简单,直接一路点击“下一步”即可完成,安装完成只有几个配置文件和它自身一个独立的程序,基本上是一个绿色软件。
第二步:LeapFTP的使用。
A.打开LeapFTP,它的主界面如图32。
B.添加FTP站点。点击菜单上的“Sites”→“Site Manager”,(或直接按快捷键F4),弹出一个FTP站点的管理窗口。点击“Add site”新建一个站点,在右边的对话框中逐一输入该站点的基本信息,例如服务器名称(可以任意填写,主要是为了管理的方便)、服务器地址、端口和用户名等(如图33),要登录该FTP站,只需在左边的窗口中双击该名称即可。
C.取得FTP服务器上的文件列表并按照需要上传或下载。登录上FTP之后,即可在LeapFTP的右上窗口中看到FTP上的文件列表,如果需要下载,将选中的文件拖入左边的本地硬盘中某个目录里(如图34)即可。同样,也可以用这种方法将硬盘中的文件上传到FTP服务器中去。
FTP服务器的架设
在我们的实际网络生活中,特别是宽带网接入之后,FTP服务器作为文件的传输和共享工具得到广泛应用。FTP服务器在文件的传输上性能稳定,占用系统资源小,而且传输速度快,现在网上已经有很多的FTP服务器可供使用,而自己架设一个FTP服务器也很容易,下面介绍两种主流的FTP架构方式。
1.利用微软公司的IIS
微软的IIS功能非常强大,它除了提供WWW服务之外,还提供FTP的服务,利用它一样很容易就能架设一个功能卓越的FTP服务器。
IIS的安装前面已经讲解过,下面我们一起来看看通过设置IIS来架设FTP服务器的几个步骤。
第一步:启动IIS,并启动IIS上的FTP服务。在默认的情况下,此时你的FTP服务器已经搭建好,并且可以立即登录,但是该FTP中没有任何文件。
第二步:鼠标右击IIS中的“默认FTP站点”项,选择“属性”菜单,即可出现如图19的对话框。
第三步:选择“主目录”的标签,在FTP站点目录的“本地路径”处填上你要设置的共享文件路径。默认情况下,此处的文件夹位置为“C:\Inetpub\Ftproot”,你如果临时想改变共享目录,随时都可在此处修改(如图20),以后别人登录你的FTP服务器时显示的文件列表就是在这个目录中。
第三步:在“主目录”的标签处,你还可设置FTP服务器的文件访问权限,分别有读取、写入和日志访问,安全起见,这里的写入权限一般不选,保证匿名用户不能随意对你文件进行操作。
第四步:设置登录的用户。如果你愿意提供“匿名”的访问权限,还需在“安全标签”处选择上“允许匿名连接”(如图21)。此外,你还可从Windows系统帐号中选择FTP服务器的特殊帐号,当然也可以自己任意设置用户名和密码。
第五步:在“消息”标签处,有“欢迎”、“退出”和“最大连接数”3个输入框,分别代表别人在登录、退出时FTP服务器上给出的提示信息,你可根据自己的需要设置。此外,最大连接数是设置同时连接本地FTP的最大主机台数(如图22)。
第六步:在“FTP站点”的标签处设置FTP标识,包括说明、IP地址和端口,这里一般不需要改动,按照默认选择即可(如图23)。此外,在“C:\Winnt\System32\Logfiles”目录中你还可以看到连接上你FTP的IP、时间等日志信息。
此时,利用IE或者任何一款FTP的客户端软件即可登录你架设好的FTP站点。
2.利用Serv-U
在FTP服务器的搭建中,Serv-U是目前使用比较多的工具之一。它设置简单,功能强大,而且非常稳定,总体上来说上它比IIS附带的FTP服务器略胜一筹。它适用于所有的Windows版本,是一款共享软件,可以让用户免费使用一个月。
第一步:Serv-U的下载和安装。
目前Serv-U的最高版本为4.0,文件大小为2.9MB,它的下载站点之一为“http://www.download.com.cn/show.phtml?action=detail&id=484”。
点击下载的可执行文件即可开始安装了,安装过程很简单,所有设置保持默认值就可以,按“Next”完成每一步(如图24)。安装完毕,在Windows的桌面上就出现Serv-U的图标,双击Serv-U图标,出现Serv-U主窗口,点击主界面右边窗口的“Start server”即可启动FTP服务器 。
第二步:Serv-U的配置。
在Serv-U的安装完成之后即可出现配置向导,可以通过这个向导来对它进行配置,主要步骤如下。
A.安装程序首先启动一个设置向导帮助你设置FTP服务器,点击“Next”继续。
B.系统弹出输入IP的对话框,此项需要填入你准备为此FTP服务器绑定的IP地址。除非你的计算机有多个固定的IP地址,并且你只想其中一个被FTP服务器所使用,否则,建议不管你是否有固定的IP地址,都将此项保留为空(即让系统自动侦测),点击“Next”(如图25)。
C.输入Domain name(域名)。此处填入你FTP服务器的域名。但域名由DNS解析而不是由这里决定,因此实际上你可以填入任意内容,比如像“我的个人FTP服务器”这种对此FTP进行说明的文字。
D.输入FTP访问的端口号,一般保持默认的21即可。
E.匿名用户的创建和访问目录的设定。首先向导会提示你是否要创建匿名帐号,这里选择是,如果选择不,则用户需要用户名和密码才能访问FTP服务器。接下来安装向导提示输入匿名用户的主目录(Anonymous home directory),此处按照需要来设定匿名用户访问硬盘的位置。
F.选择匿名用户是否将其限制在主目录里,如果选择是,则用户只能访问其主目录及以下的目录树;如果选择否,则可以访问其主目录的同级或更高级的目录树。从安全角度考虑,一般建议选是。
G.创建新用户和访问目录。按照向导的提示一步一步创建新用户并输入密码(如图26),接着指定该用户可访问的目录和用户权限即可。
到这里,你的个人FTP就已经搭建完成了。不过这还只能实现Serv-U赋予的默认功能和权限,要真正让这个服务器能被你自己随心所欲地控制和管理,则还需要经过以下后续的操作,这主要包括如下几点。
A.对FTP用户的管理
欲增加一个新用户(包括增加Anonymous用户),则在Serv-U的一个域中选中Users(用户),然后单击右键,进入New User(新用户),依次根据提示为它设置好User Name(用户名)、Password(密码)、Home directory(主目录)等即可完成(如图27)。
欲删除一个用户,则在此用户上单击右键,选Delete User(删除用户)即可。
B.对目录权限的管理
在Serv-U左边框架中选中用户名,再在右边框架中进入Dir Access(目录存取)窗口,然后在列表中选中相应目录后,就可在窗口的右侧更改当前用户对它的访问权限了(如图28)。
文件的属性主要包括:
Read(读):对文件进行读操作(复制、下载,不含查看)的权力。
Write(写):对文件进行写操作(上传)的权力。
Append(附加):对文件进行写操作和附加操作的权力。
Delete(删除):对文件进行删除(上传、更名、删除、移动)操作的权力。
Execute(执行):直接运行可执行文件的权力。
List(列表):对文件和目录的查看权力。
Create(建立):建立目录的权力。
Remove(移动):对目录进行移动、删除和更名的权力。
Inherit(继承):如勾选中此项,则以上设置的属性将对当前Path(目录)及其下的整个目录树起作用;否则就只对其当前目录有效。
C.其他设置
在Local server下的Setting处还可设置服务器的一些通用信息。
在“max no.of users”处,设定同时登录该服务器的最大用户数。
在Max.Speed处根据自己电脑的配置,设置用户最大下载速度。
选择“Block users who connect more than XX times within YY seconds for ZZ minutes”复选框并设置相应的数值,可以防止有些恶意用户为达到攻击目的在短时间内对该服务器的频繁登录。
选择“Delete partially uploaded files”复选框,可以自动删除上传失败后留在服务器上不完整文件。如果不要选中这项,就能让Serv-U支持断点上传功能(如图29)。
3.架设FTP服务器的其他方式。
A.WS_FTP Server。这是一套非常有特色的FTP Server程序。它有简单而强大的图形接口。设置起来比较容易,可以在Win9X/NT/2000/XP系统下使用,是一个共享的英文软件,文件大小为3.3MB,下载站点之一:http://www.skycn.com/soft/1296.html。
B.FileZilla Server。作为一个小巧、可*的FTP服务器软件,它配置简单,功能比较强大,适合Windows系列中的所有版本,文件大小为637kB,同时它是完全免费的软件,它的汉化版下载站点之一:http://www.skycn.com/soft/8091.html。
C.TYPSoft FTP Server汉化版。由于该软件经过汉化,因此使用起来很容易上手,是一个非常适合初学者的FTP服务器端软件,它配置简单,也能方便地管理用户,软件大小只有480kB,是一款免费软件,它的下载站点之一:http://www.skycn.com/soft/8335.html。
WWW服务器和FTP的访问途径
WWW的访问都可使用IE或其他浏览器来实现,例如我们经常看到的Natscape和Opera等。由于它的访问很容易,这里就不再详细讨论。
FTP的访问一般有两种方式,介绍如下:
A.直接利用IE登录FTP。现在我们正在使用的IE也可作为登录FTP的工具了,跟浏览网页一样,只需要将地址前面的HTTP改为FTP即可,例如访问自己的FTP,可以在浏览器中输入ftp://localhost(如图30),这时是匿名访问方式,如果用IE登录FTP时需用户名和密码,则可以右键调出登录的菜单(如图31),在对话框中输入用户名和密码即可。IE登录FTP服务器之后,FTP服务器上的文件跟本机上的文件一样,可以对其进行复制和粘贴等操作。
B.利用专用的软件登录FTP。此类软件有很多,比较着名的有FlashFXP、CuteFTP、LeapFTP等。
个人觉得LeapFTP很不错,操作简单,占用资源也很小,它的用法分步介绍如下。
第一步:LeapFTP的下载与安装。
目前LeapFTP较新的版本为2.7.2,是一个共享软件,LeapFTP v2.7.2.592的汉化版可以去http://www.skycn.com/soft/711.html下载。它的安装非常简单,直接一路点击“下一步”即可完成,安装完成只有几个配置文件和它自身一个独立的程序,基本上是一个绿色软件。
第二步:LeapFTP的使用。
A.打开LeapFTP,它的主界面如图32。
B.添加FTP站点。点击菜单上的“Sites”→“Site Manager”,(或直接按快捷键F4),弹出一个FTP站点的管理窗口。点击“Add site”新建一个站点,在右边的对话框中逐一输入该站点的基本信息,例如服务器名称(可以任意填写,主要是为了管理的方便)、服务器地址、端口和用户名等(如图33),要登录该FTP站,只需在左边的窗口中双击该名称即可。
C.取得FTP服务器上的文件列表并按照需要上传或下载。登录上FTP之后,即可在LeapFTP的右上窗口中看到FTP上的文件列表,如果需要下载,将选中的文件拖入左边的本地硬盘中某个目录里(如图34)即可。同样,也可以用这种方法将硬盘中的文件上传到FTP服务器中去。
域名的申请和动态IP的解决措施
为了便于记忆,我们可以申请WWW服务器和FTP服务器地址的域名。
网易提供免费域名的申请,大家可以去http://my.yeah.net/apply-new.htm上免费获得(如图35),例如申请http://202.117.51.43对应的域名http://forus.yeah.net,这样以后访问自己的WWW服务就再也不需记住那些毫无意义的数字符号了。在浏览器中直接输入自己申请的域名即可。此外,雅克精彩(http://www.k666.com/k666/yu-ming/apply.php)和My001.net网(http://www.my001.net)也都提供免费的WWW服务域名申请。
对FTP来说,域名的申请站点相对较少,这里推荐老牌的域名转向免费服
3. FTP服务器的架设(路由器端口设置怎么设置啊)
路由器那边只有设置ftp相应的IP 及ftp端口21就行了,就是在虚拟服务器那边设置就行了
4. win7 创建ftp 如何设置用户名/密码登录
1.首先在C盘新建一个你要用于上传的文件夹。如这里建立一个名叫ftp的文件夹。
5. FTP的几种登录访问方式
当我们建立好FTP服务器后,如何才能够对服务器的内容进行访问,今天为大家讲解一下FTP的几种登录访问方式。6. ftp的路径怎么设置
问一下,你是想做ftp上传下载么?
首先你需要安装一个ftp服务端程序,启动起来,然后下载一个ftp客户端程序,测试能不能连接,首先这一块儿需要测试通过。
代码ftp上传下载
2.1 上传代码:
import java.io.File;
import java.io.FileInputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class test {
private FTPClient ftp;
/**
*
* @param path 上传到ftp服务器哪个路径下
* @param addr 地址
* @param port 端口号
* @param username 用户名
* @param password 密码
* @return
* @throws Exception
*/
private boolean connect(String path,String addr,int port,String username,String password) throws Exception {
boolean result = false;
ftp = new FTPClient();
int reply;
ftp.connect(addr,port);
ftp.login(username,password);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(path);
result = true;
return result;
}
/**
*
* @param file 上传的文件或文件夹
* @throws Exception
*/
private void upload(File file) throws Exception{
if(file.isDirectory()){
ftp.makeDirectory(file.getName());
ftp.changeWorkingDirectory(file.getName());
String[] files = file.list();
for (int i = 0; i < files.length; i++) {
File file1 = new File(file.getPath()+"\\"+files[i] );
if(file1.isDirectory()){
upload(file1);
ftp.changeToParentDirectory();
}else{
File file2 = new File(file.getPath()+"\\"+files[i]);
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(file2.getName(), input);
input.close();
}
}
}else{
File file2 = new File(file.getPath());
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(file2.getName(), input);
input.close();
}
}
public static void main(String[] args) throws Exception{
test t = new test();
t.connect("", "localhost", 21, "yhh", "yhhazr");
File file = new File("e:\\uploadify");
t.upload(file);
}
}
2.2 下载代码
这里没有用到filter,如果用filter就可以过滤想要的文件。
public class Ftp {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Ftp ftp = new Ftp();
String hostname = "www.strawberry.com";
Integer port = 21;
String username = "username";
String password = "password";
String remote = "/c.txt";
String local = "/home/tin/LeonChen/FTP/";
try {
ftp.connect(hostname, port, username, password);
System.out.println("接收状态:"+ftp.download(remote, local));
ftp.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private FTPClient ftpClient = new FTPClient();
/*
* * 连接到FTP服务器
* * @param hostname 主机名
* * @param port 端口
* * @param username 用户名
* * @param password 密码
* * @return 是否连接成功
* * @throws IOException
*/
private boolean connect(String hostname, int port, String username,
String password) throws IOException {
ftpClient.connect(hostname, port);
ftpClient.setControlEncoding("UTF-8");
if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
if (ftpClient.login(username, password)) {
return true;
}
}
disconnect();
return false;
}
/*
* 从FTP服务器上下载文件,支持断点续传,上传百分比汇报
*
* @param remote 远程文件路径
*
* @param local 本地文件路径
*
* @return 上传的状态
*
* @throws IOException
*/
public DownloadStatus download(String remote, String local)
throws IOException {
// 设置被动模式
ftpClient.enterLocalPassiveMode();
// 设置以二进制方式传输
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
DownloadStatus result;
// 检查远程文件是否存在
FTPFile[] files = ftpClient.listFiles(new String(remote
.getBytes("UTF-8"), "iso-8859-1"));
if (files.length != 1) {
System.out.println("远程文件不存在");
return DownloadStatus.Remote_File_Noexist;
}
long lRemoteSize = files[0].getSize();
String fildName = files[0].getName();
// 本地存在文件,进行断点下载
File f = new File(local+fildName);
if (f.exists()) {
long localSize = f.length();
if (localSize >= lRemoteSize) {
System.out.println("本地文件大于远程文件,下载中止");
return DownloadStatus.Local_Bigger_Remote;
}
// 进行断点续传,并记录状态
FileOutputStream out = new FileOutputStream(f, true);
ftpClient.setRestartOffset(localSize);
InputStream in = ftpClient.retrieveFileStream(new String(remote.getBytes("UTF-8"), "iso-8859-1"));
byte[] bytes = new byte[1024];
long step = lRemoteSize / 100;
long process = localSize / step;
int c;
while ((c = in.read(bytes)) != -1) {
out.write(bytes, 0, c);
localSize += c;
long nowProcess = localSize / step;
if (nowProcess > process) {
process = nowProcess;
if (process % 10 == 0)
System.out.println("下载进度:" + process);
// TODO 更新文件下载进度,值存放在process变量中
}
}
in.close();
out.close();
boolean isDo = ftpClient.completePendingCommand();
if (isDo) {
result = DownloadStatus.Download_From_Break_Success;
} else {
result = DownloadStatus.Download_From_Break_Failed;
}
} else {
OutputStream out = new FileOutputStream(f);
InputStream in = ftpClient.retrieveFileStream(new String(remote.getBytes("UTF-8"), "iso-8859-1"));
byte[] bytes = new byte[1024];
long step = lRemoteSize / 100;
long process = 0;
long localSize = 0L;
int c;
while ((c = in.read(bytes)) != -1) {
out.write(bytes, 0, c);
localSize += c;
long nowProcess = localSize / step;
if (nowProcess > process) {
process = nowProcess;
if (process % 10 == 0)
System.out.println("下载进度:" + process);
// TODO 更新文件下载进度,值存放在process变量中
}
}
in.close();
out.close();
boolean upNewStatus = ftpClient.completePendingCommand();
if (upNewStatus) {
result = DownloadStatus.Download_New_Success;
} else {
result = DownloadStatus.Download_New_Failed;
}
}
return result;
}
private void disconnect() throws IOException {
if (ftpClient.isConnected()) {
ftpClient.disconnect();
}
}
}