FTP服务器搭建以及上传下载的学习
首先需要搭建FTP服务步骤如下:
1.在win7上先开启ftp服务:这里点击确定后,可能会要等一会儿,完成后有时系统会提示重启
2.打开 计算机--》管理--》 在这里我们可以看见刚刚添加的服务 (IIS)
3.创建一个ftp站点
4.点击添加FTP站点后,就是要继续的添加必要的站点信息,这里是:站点名称 以及登录ftp后的站点指定目录(文件夹),点击下一步
5.站点的地址就写自己的IP就好,端口21,是ftp的默认端口,(端口随意,尽量不要用已经被占用了的端口号)
6.,这里要填写一下登录用户,基本呢就是本计算机上的用户,匿名呢就是Anonymous 密码只要是符合电子邮箱的格式就都可以登录例如:"IEUser@",百度上说不用写空的也可以,没试过,有时候可以吧;
访问权限 顾名思义,针对计算机上的用户
读写就不说了点击完成,就成功建立了一个FTP站点了
7.建立之后就是这个样子,右击点击你们建立的站点,启动就好.(这是我之前建好的站点)
8.用户,用户就是用系统当前的windows用户即可,也可以自己创建一个,具体做法就是用户-->右键选择新用户,要填写自己的用户名和密码
10.这样一个ftp站点就已经创建好了,可以在浏览器,或者是在窗口上输入:ftp://192.168.1.151:21回车即可看到自己的指定空间,若有用户名密码那就输入用户密码点击确定就好啦,我们还可以在ftp站点上设置一下权限之类的,例如这样: 点击进去可以设置相应的权限
11.这样ftp站点完成了,第一种方法中可能还会要我们时常的开启服务,还要注意我们当前使用的端口号是否已经被占用,若已经被占用,那就需要修改一下端口号,方法可能需要我们重新建立一个ftp站点(小伙伴有什么更好的建议可以评论留言),若果是自己的电脑的话,服务可以设置成手动的,若是公司的话,那就根据相应的需求去改动。
下面要介绍的是第二种方法,第二种方法相对来说比较简单,就是用已经现成的FileZillaServer这款软件,这款软件小巧实用,一共也就2M,上百度搜索下载安装打开就好了基本上就都用默认设置就够用了
12.打开后是这个界面,我们使用本地地址,端口那里默认14147就好,实际上还是21,若要修改端口,就在第一次登陆ftp的时候,在冒号后面加上自己想要修改之后的端口号就好,-->点击连接
13.在Edit-->Users添加登录用户,在这里给出用户名,相应的地址,和对应的权限
添加密码
14.点击OK ,这样一个ftp服务也搭建好了,这个可以更加直观的看日志,另外,在Edit-->Settings中也可以修改对日志的设置,好了这个就是第二种方法,第二种方法看起来更加的简便吧,以上就是在win7上搭建ftp服务的两种方法,本人新手小白,请多多指教!
有人会说我上传或者下载的文件为什么会少1kb呀,又或者是,我上传的文件被损坏了,无法打开,txt还可以打开,但是其它的就不好说了,又或者是上传的图片,尾部有一小节的数据丢失,说实话我也出现了这个问题,最后发现是jar包的版本问题,ftp上传是要添加jar包的apache的这款jar包:commons-net-3.3.jar,这个jar包的版本是3.3的,传输是没有问题的,但如果使用commons-net-3.0.jar,3.0这个版本的话是会有一个功能bug,会造成数据尾部丢失,它的传输是只能传输整数kb的文件,意思呢就是他的传输方法中用的是取整kb,例如:166.7kb,传输之后就只会有166.0kb,相应的在3.0.1版本之后可能就把这个bug修正了,所以万一碰见了不用急,只要换一个版本较高一点的jar包就好了,本人亲测,非常好用!
以上内容转自:https://blog.csdn.net/XRB_666/article/details/73913586
还有linux环境下搭建的方法,因不具备条件本人并未亲试,但是可以参考一下:https://www.cnblogs.com/xiaojiaocx/p/6410015.html
对于FTP操作的相关学习链接(有删除,字符编码设置,工作流等等的设置):https://blog.csdn.net/zahaa2012/article/details/51150162
以下是自己学习是的代码:
public class FTPClientTest { /**
* 创建ftp上传文件的方法
* @param url 主机地址
* @param port 主机端口号
* @param uname 用户名
* @param pword 密码
* @param pathname FTP服务器保存文件的路径
* @param filename 文件名称
* @param inputStream 输入流
* @return
*/
public static boolean uploadFile(String url,int port,String uname,String pword,String pathname,String filename
,InputStream inputStream){
boolean isSuccess = false;
FTPClient ftpClient = new FTPClient(); //创建FTPClient对象
//传输的字符编码(防乱码)
ftpClient.setControlEncoding("UTF-8");
//超时时间(防止FTP僵死)
ftpClient.setConnectTimeout(1000 * 60);
ftpClient.setDataTimeout(1000 * 60);
ftpClient.setDefaultTimeout(1000 * 60);
//工作流的大小
ftpClient.setBufferSize(1024 * 4);
//主被动模式(应对FTP服务器的相关安全设置)
//ftpclient.enterLocalPassiveMode();
ftpClient.enterLocalActiveMode();
try {
ftpClient.connect(url, port); //通过ftpClient对象以及url和端口号创建连接
ftpClient.login(uname, pword); //进行登录
int reply = ftpClient.getReplyCode(); //看返回的值是不是230,如果是,表示登陆成功 //System.out.println("返回值是什么呢??----"+reply);
/*if(!FTPReply.isNegativePermanent(reply)){ //满足这个条件则代表连接失败
ftpClient.disconnect();
return isSuccess;
}*/
boolean c = ftpClient.changeWorkingDirectory(pathname); //设置工作空间 //System.out.println(c);
boolean b = ftpClient.storeFile(filename, inputStream); //上传文件 //System.out.println("上传成功了吗????----"+b);
inputStream.close(); //关闭输入流
ftpClient.logout(); //退出登录
isSuccess = true;
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return isSuccess;
} /**
* 创建ftp下载文件的方法
* @param url ftp服务地址
* @param username ftp用户名
* @param password ftp用户密码
* @param filepath ftp下载的文件名
* @param remotepath ftp文件的相对路径
* @param port ftp服务器的端口号
* @param localpath 下载文件的保存位置
* @return
*/
public static boolean downFile(String url,String username,String password,String filename,String remotepath,
int port,String localpath){
boolean success = false;
FTPClient ftp = new FTPClient(); //创建FTPClient对象
try {
ftp.connect(url, port); //创建链接
ftp.login(username, password); //登录FTP服务
int code = ftp.getReplyCode(); //获取返回的reply值 230代表连接成功
ftp.changeWorkingDirectory(remotepath); //转移到ftp服务器目录
FTPFile[] files = ftp.listFiles(); //通过listFiles()获取所有的文件名
for (FTPFile file : files) {
if(file.getName().equals(filename)){ //找到相匹配的文件名进行下载
File localFile = new File(localpath+"/"+filename); OutputStream os = new FileOutputStream(localFile);
boolean b = ftp.retrieveFile(filename, os);
System.out.println("下载成功了吗???---"+b);
success = true;
}
} } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return success;
} public static void main(String [] args){
try {
FileInputStream fis = new FileInputStream(new File("D:/qcq公司资料/test.txt"));
//boolean flag = uploadFile("192.168.2.90", 21, "qcq", "qcq", "test", "test1", fis); //验证上传文件
//System.out.println("----------"+flag); boolean b = downFile("192.168.2.90", "qcq", "qcq", "test1", "/test", 21, "d:/qcq公司资料"); //验证下载文件
System.out.println("----------"+b);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
FTP服务器搭建以及上传下载的学习的更多相关文章
- Android和FTP服务器交互,上传下载文件(实例demo)
今天同学说他备份了联系人的数据放在一个文件里,想把它存到服务器上,以便之后可以进行下载恢复..于是帮他写了个上传,下载文件的demo 主要是 跟FTP服务器打交道-因为这个东东有免费的可以身亲哈 1. ...
- linux命令行模式下对FTP服务器进行文件上传下载
参考源:点击这里查看 1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码 ...
- 通过JAVA对FTP服务器连接,上传,下载,读取,移动文件等
记录一次对FTP服务器文件内容 通过Java程序对FTP服务器文件处理:连接,上传,下载,读取,移动文件等. 需求描述:今天接到一个任务,在Java项目中,读取FTP服务器上的一些文件,进行一些业务操 ...
- xftp实现本地与服务器的文件上传下载(windows)
背景: Jemter环境搭建,需上传下载服务器文件到aws服务器上,由于secureCRT的局限性它只支持pub格式的密钥,不支持pem格式密钥,xshell是支持pem格式的,所以尝试安装xshel ...
- 我的代码库-Java8实现FTP与SFTP文件上传下载
有网上的代码,也有自己的理解,代码备份 一般连接windows服务器使用FTP,连接linux服务器使用SFTP.linux都是通过SFTP上传文件,不需要额外安装,非要使用FTP的话,还得安装FTP ...
- Java实现FTP与SFTP文件上传下载
添加依赖Jsch-0.1.54.jar <!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> <dependency ...
- Java实现FTP批量大文件上传下载篇1
本文介绍了在Java中,如何使用Java现有的可用的库来编写FTP客户端代码,并开发成Applet控件,做成基于Web的批量.大文件的上传下载控件.文章在比较了一系列FTP客户库的基础上,就其中一个比 ...
- Nginx + Lua搭建文件上传下载服务
收录待用,修改转载已取得腾讯云授权 最新腾讯云技术公开课直播,提问腾讯W3C代表,如何从小白成为技术专家?点击了解活动详情 作者 | 庄进发 编辑 | 迷鹿 庄进发,信息安全部后台开发工程师,主要负责 ...
- java代码实现ftp服务器的文件上传和下载
java代码实现文件上传到ftp服务器: 1:ftp服务器安装: 2:ftp服务器的配置: 启动成功: 2:客户端:代码实现文件的上传与下载: 1:依赖jar包: 2:sftpTools 工具类: ...
随机推荐
- UML——构件图
宏观导图: 细节探究: 一.What 构件:是一个应用很广的名词,在建筑工程.机械工程.软件工程中等都有该概念.其实,说道底表达的都是一个意思.就像是标准化生产出来的零部件一样,具有可替换性.同质性, ...
- C# 如何复制(拷贝)Label控件上的文本【新方法】
Label控件在目前是无法直接调用成员函数来复制其文本内容.其实网络上有很多热心程序员网民解答过这个问题,百度上也可以搜索到,不过大多数人建议使用 TextBox 并把边框调整为不可见(运行时文本框看 ...
- hdu 4352 XHXJ's LIS(数位dp+状压)
Problem Description #define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then carefull ...
- CodeForces 893C (并查集板子题)
刷题刷到自闭,写个博客放松一下 题意:n个人,m对朋友,每寻找一个人传播消息需要花费相应的价钱,朋友之间传播消息不需要花钱,问最小的花费 把是朋友的归到一起,求朋友中花钱最少的,将所有最少的加起来. ...
- P1108 低价购买(DP)
题目描述 "低价购买"这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:"低价购买:再低价购买".每次你购买一支股 ...
- 三、Python基本数据类型
一.基本算术运算(获取的结果是值) 1 a1=10 2 a2=20#初始赋值 3 a3=a1+a2 #结果30 4 a4=a2-a1 #结果10 5 a5=a1*a2 #结果200 6 a6=a2/a ...
- VS制作可自动覆盖旧版本的安装包
1.设置属性 DetectNewerInstalledVersion=TrueInstallAllUsers = TrueRemovePreviousVersion = True 2.增加软件版本号, ...
- python3 anaconda 安装pyhook3 pythoncom(pywin32)
为什么不安装pyhook 1.pyhook不支持python3 2.网络上有一些方法下载pyhook的whl然后pip安装到python3,可以运行,但是会因为编码问题导致移动到窗口标题含有非ASCI ...
- STM32 单片机的USART的奇偶校验 误区(坑)
当STM32的串口配置成带有奇偶校验位的情况下,需要软件校验是否发生奇偶校验错误,硬件只是置起奇偶校验错误标志位,并将错误的数据放到DR寄存器中,同时置起RXEN标志位,如果使能中断还是会正常进入中断 ...
- python 爬取腾讯视频的全部评论
一.网址分析 查阅了网上的大部分资料,大概都是通过抓包获取.但是抓包有点麻烦,尝试了F12,也可以获取到评论.以电视剧<在一起>为例子.评论最底端有个查看更多评论猜测过去应该是 Ajax ...