ftp文件上传及下载工具类
发布日期:2021-06-30 18:41:08
浏览次数:6
分类:技术文章
本文共 5400 字,大约阅读时间需要 18 分钟。
1、ftp文件上传用例解析(需使用apacher的commons-net-3.3.jar)
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文件上传及下载工具类代码实现:
/** * @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(); } }}
懒人地址:
转载地址:https://linqiarui.blog.csdn.net/article/details/53326914 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月18日 17时15分29秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
中国高考地狱级难度的省份,找到了
2019-04-26
终于有人把监督学习、强化学习和无监督学习讲明白了
2019-04-26
2021一季度中国十大环境舒适之城,找到了
2019-04-26
pytorch中的tensorboard使用
2019-04-26
图像处理YUV的详解
2019-04-26
QT项目之文件重复检测
2019-04-26
C++学习 -3 C和C++的混合编程及库的调用
2019-04-26
基于QT的仓库礼品出入库管理(第一个给别人使用的软件)
2019-04-26
C++之调用脚本实现复制当前路径指定目录下文件到另外的地方
2019-04-26
C++学习 -2 namespace大全
2019-04-26
海思项目学习记录 -4、H.264及RTSP协议实时传输
2019-04-26
c语言——位运算符及用法
2019-04-26
java安卓开发软件及环境配置
2019-04-26
C语言数据类型的转化
2019-04-26
回顾大一
2019-04-26
英语(未完)
2019-04-26
define与const(未完待续)
2019-04-26
Eclipse的一些技巧以及快捷键(未完待续)
2019-04-26
java的基础语法(未完待续)
2019-04-26