本文以vsftpd服务器搭建为例
1、服务安装
[root@FTP-250 ~]# yum -y install vsftpd
2、 关闭匿名访问(数据安全问题)
修改vsftpd配置文件 vim /etc/vsftpd/vsftpd.conf
将anonymous_enable的值改为no
3、开放防火墙中ftp的端口21(否则外界无法访问服务器资源)
4、创建一个用户,单独用户ftp访问时使用(ftpuser/ftpuser)
5、 修改selinux,开放ftp访问权限( 默认是禁用了ftp访问)
查看selinux
修改selinux
[root@FTP-250 ~]# setsebool -P allow_ftpd_full_access on
[root@FTP-250 ~]# setsebool -P ftp_home_dir on
6、启动vsftpd服务
[root@FTP-250 vsftpd]# service vsftpd start
7、配置被动模式,否则否则客户端无法访问服务端数据
【1】编辑/etc/vsftpd/vsftpd.conf文件,
[root@FTP-250 ~]# vim /etc/vsftpd/vsftpd.conf
并在文件的末尾添加
pasv_min_port=30000
pasv_max_port=30999
【2】修改防火墙,开启30000:30999之间所有的端口,并重启防火墙
【3】重启vsftpd服务器
通过浏览器访问 ,发现可以正常连接了
通过Java代码链接FTP服务器,从而实现文件存储
1、创建一个maven项目(jar)
【1】添加依赖包
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.jinshan.ftp</groupId>
<artifactId>ftp</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
</dependencies>
</project>
【2】编写测试代码
package cn.jinshan.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
public class FtpTest {
public static void main(String[] args) {
//一、建立连接
FTPClient client = new FTPClient();
try {
client.connect("192.168.100.250");
//二、设置参数
//1校验账号信息
client.login("ftpuser", "ftpuser");
//2获得本地文件
File file = new File("C:UsersAdministratorDesktopftp1.png");
//3设置上传方式(字节)
client.setFileType(FTP.BINARY_FILE_TYPE);
//4设置是否被动模式上传
client.enterLocalPassiveMode();
//5指定上传路径
client.changeWorkingDirectory("/home/ftpuser/ego/imges");
//三、上传
InputStream local = new FileInputStream(file);
boolean flag = client.storeFile("ftp1.png", local);
if (flag) {
System.out.println("上传成功");
}else {
System.out.println("上床失败");
}
//关闭
client.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}