大家好,又见面了,我是你们的朋友全栈君。
1、ftp文件上传用例解析(需使用apacher的commons-net-3.3.jar)
代码语言:javascript复制public class TestFtp {
@Test
public void test() throws Exception {
// 1、创建FTP客户端
FTPClient ftpClient = new FTPClient();
// 2、连接ftp地址
ftpClient.connect("192.168.128.128", 21);
// 3、登录
ftpClient.login("ftpuser", "123456");
// 4、设置文件存放目录
ftpClient.changeWorkingDirectory("/home/ftpuser/www/images");
// 5、设置上传文件类型(默认是文本)
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// 6、指定文件名及文件输入流,上传文件
FileInputStream is = new FileInputStream(new File("f:\eee"));
ftpClient.storeFile("hello.jpg", is);
// 7、登出
ftpClient.logout();
}
}
2、ftp文件上传及下载工具类代码实现:
代码语言:javascript复制/** * @author CSDN_LQR * @TODO ftp上传下载工具类 */
public class FtpUtil {
/** * Description: 向FTP服务器上传文件 * * @param host * FTP服务器hostname * @param port * FTP服务器端口 * @param username * FTP登录账号 * @param password * FTP登录密码 * @param basePath * FTP服务器基础目录 * @param filePath * FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath filePath * @param filename * 上传到FTP服务器上的文件名 * @param input * 输入流 * @return 成功返回true,否则返回false */
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服务器
// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
// 切换到上传目录
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(FTP.BINARY_FILE_TYPE);
// 上传文件
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;
}
/** * Description: 从FTP服务器下载文件 * * @param host * FTP服务器hostname * @param port * FTP服务器端口 * @param username * FTP登录账号 * @param password * FTP登录密码 * @param remotePath * FTP服务器上的相对路径 * @param fileName * 要下载的文件名 * @param localPath * 下载后保存到本地的路径 * @return */
public static boolean downloadFile(String host, int port, String username, String password, String remotePath,
String fileName, String localPath) {
boolean result = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(host, port);
// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
FTPFile[] fs = ftp.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
File localFile = new File(localPath "/" ff.getName());
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;
}
public static void main(String[] args) {
try {
FileInputStream in = new FileInputStream(new File("D:\temp\image\gaigeming.jpg"));
boolean flag = uploadFile("192.168.25.133", 21, "ftpuser", "ftpuser", "/home/ftpuser/www/images",
"/2015/01/21", "gaigeming.jpg", in);
System.out.println(flag);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
懒人地址:http://download.csdn.net/detail/csdn_lqr/9692906
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/134697.html原文链接:https://javaforall.cn