一、Linux安装FTP服务
首先Linux服务器需要安装FTP服务,步骤如下:
1、执行如下ftp服务安装命令:
yum install vsftpd
可能会出现如下错误:
"Couldn't open file /mnt/repodata/repomd.xml"
执行如下挂载命令后重新安装即可:
mount /dev/cdrom /mnt
2、启动ftp服务
命令:
开启:# service vsftpd start
关闭:# service vsftpd stop
3、ftp默认用户
ftp默认的用户为test,ftp目录为/home/test。在Linux中创建新用户,如下:
# useradd -d /home/test test //增加用户test,并制定test用户的主目录为/home/test
# passwd test //为test设置密码
# userdel test //删除test用户
二、Java实现文件上传
ftp依赖的jar包的pom.xml文件如下:
commons-net
commons-net
3.6
具体代码:
package com.leboop.util;
import .ftp.FTP;
import .ftp.FTPClient;
import .ftp.FTPReply;
import java.io.*;
import java.util.Date;
/**
* Created by leboop on /8/28.
*/
public class FtpUtil {
//服务器ip地址
private static String url = "192.168.189.111";
//FTP端口,默认是21(注意:SSH默认22)
private static int port = 21;
//登录用户名
private static String username = "test";
//登录密码
private static String password = "11111111";
/将字符串写入文件上传至服务器
public static boolean upload() {
//写入文件的字符串
String cityStr = "Hello World";
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.setControlEncoding("UTF-8");
//连接FTP服务器
ftp.connect(url, port);
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(username, password);
//如果reply的值是230,表示连接成功,530可能是用户名或者密码错误
//500可能是/home/test目录不存在
reply = ftp.getReplyCode();
System.out.println(reply);
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
long date = new Date().getTime();
String filename = date + "ftp.csv";
byte[] cBytes= cityStr.getBytes();
//字符串转换为字节数组
InputStream input = new ByteArrayInputStream(cBytes);
ftp.enterLocalPassiveMode();
//需要添加这行代码,不然上传的文件为空
ftp.setFileType(FTP.BINARY_FILE_TYPE);
boolean g = ftp.storeFile(filename, input);
System.out.println("上传服务器:" + g);
input.close();
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
}