Java将文件上传到ftp服务器
作者:心之所向、
这篇文章主要为大家详细介绍了Java将文件上传到ftp服务器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Java将文件上传到ftp服务器的具体代码,供大家参考,具体内容如下
首先简单介绍一下什么是FTP,以及如何在自己的电脑上搭建一个ftp服务器;
—— FTP是文件传输协议(FTP)是一种客户端/服务器协议,用于将文件传输到主机或与主机交换文件。它可以使用用户名和密码进行身份验证。匿名 FTP 允许用户从 Internet 访问文件,程序和其他数据,而无需用户 ID 或密码。总之就是方便一个可以上传下载文件的地方。
要实现上传文件,首先要在本地创建一个ftp服务器(win10系统);
一、本地创建一个其他用户
二、创建FTP目录
三、账户绑定FTP目录,登录验证
四、FTP目录创建好之后可以通过你选择的ip 进行访问 ftp://ip地址,账号密码就是你所设置的用户的账号密码
下面写javaFTP上传工具类代码,复制可用
maven依赖
<dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.1</version> </dependency>
public class FtpUtil { /** * Description: 向FTP服务器上传文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @param password FTP登录密码 * @param basePath FTP服务器基础目录 * @param filePath FTP服务器文件存放路径。文件的路径为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)) { //创建目录 //如果创建文件目录失败,则返回 System.out.println("创建文件目录"+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; } //ftp上传文件测试main函数 public static void main(String[] args) { //上传 try { FileInputStream in=new FileInputStream(new File("D:\\text.txt")); boolean flag = uploadFile("ip", 21, "username", "password", "/text","/wenjian", "hello.txt", in); System.out.println(flag); } catch (FileNotFoundException e) { e.printStackTrace(); } //下载 boolean b = downloadFile("ip", 21, "username", "password", "/text/wenjian", "hello.txt", "D://"); System.out.println(b); }
java代码中都有注释,就不解释了,下面有一个main 方法,可以直接进行测试。以上就是使用java向FTP文件上传的全部内容。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。