1. 检查Linux服务器上是否安装了vsftpd服务
rpm -qa|grep vsftpd
没有返回就是没安装,安装了卸载 rpm -e xxxxx
2. 安装 yum -y install vsftpd
3. 修改配置文件 vi /etc/vsftpd/vsftpd.conf
4. 改 anonymous_enable=NO
5. 保存重启 systemctl restart vsftpd
6. 查看状态 systemctl status vsftpd
7. 为ftp创建用户,并将用户上传文件绑定到目录: /var/ftp/testftp
useradd -d /var/ftp/userftp userftp
passwd userftp
输入密码 xxx
8. 开启21端口
9. 电脑访问 ftp://ip
启动:systemctl start vsftpd、service vsftpd start
停止:systemctl stop vsftpd、service vsftpd stop
重启:systemctl restart vsftpd、service vsftpd restart
java 上传ftp 下载ftp
pom.xml
<dependencies>
<!-- SpringBoot Web容器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.2.13.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
</dependencies>
util 上传下载工具类
public class uploadFile {
public static boolean uploadFile(String host, int port, String username, String password, String basePath,
String filePath, String filename, InputStream input) {
boolean result = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(host, port);
ftp.login(username, password);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.enterLocalActiveMode();
ftp.setControlEncoding("UTF-8");
if (!ftp.changeWorkingDirectory(basePath+filePath)) {
String[] dirs = filePath.split("/");
String tempPath = basePath;
for (String dir : dirs) {
if (null == dir || "".equals(dir)){
continue;
}
tempPath += "/" + dir;
if (!ftp.changeWorkingDirectory(tempPath)) {
if (!ftp.makeDirectory(tempPath)) {
return result;
} else {
ftp.changeWorkingDirectory(tempPath);
}
}
}
}
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
if (FTPReply.isPositiveCompletion(ftp.sendCommand("OPTS UTF8", "ON"))) {
ftp.setControlEncoding("CHARSET_UTF8");
}
filename=new String(filename.getBytes("UTF-8"),"ISO-8859-1");
if (!ftp.storeFile(filename, input)) {
return result;
}
input.close();
ftp.logout();
result = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return result;
}
public static boolean downloadFile(String host, int port, String username, String password, String remotePath,
String fileName, String localPath) throws UnsupportedEncodingException {
String fileNameGBK=new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
boolean result = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(host, port);
ftp.login(username, password);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.enterLocalActiveMode();
ftp.changeWorkingDirectory(remotePath);
FTPFile[] fs = ftp.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileNameGBK)) {
File localFile = new File(localPath + "/" + fileName);
OutputStream is = new FileOutputStream(localFile);
ftp.retrieveFile(ff.getName(), is);
is.close();
}
}
ftp.logout();
result = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return result;
}
}
测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class SignTest {
@Test
public void upload() throws FileNotFoundException {
InputStream inputStream = new FileInputStream(new File("F:/JAVAProJect/persional/哈哈.txt"));
uploadFile.uploadFile("127.0.0.1",21,"username","password","/var/ftp/userftp","/","哈哈.txt",inputStream);
}
@Test
public void down() throws UnsupportedEncodingException {
uploadFile.downloadFile("127.0.0.1",21,"username","password","/var/ftp/userftp","哈哈.txt","F:/JAVAProJect/persional/dt");
}
}