Java实现FTP上传

一、前台form
要注意的事项:
1)form要有的属性:
2)前后台字段的对应要注意两个问题点
1.前台文件控件的id是什么,后台action里就要声明一个同名(大小写要相同)对File类型的属性。
如<input type="file" id="file2Ftp"/>对应的action里就要声明:
private File file2Ftp;getter/setter...
2.前台文件控件的id是什么,后台action里还要声明一个String类型的属性,名字格式是固定的:文件控件的id+FileName
如<input type="file" id="file2Ftp"/>对应的action里就要声明:
private String file2FtpFileName;getter/setter...

这个字段,是在form提交的时候(submit),由Struts2的FileUploadInterceptor自动包装的,目的大概是用来记录要上传的文件名(个人这样用,具体作用待考)。

二、后台FTP实现文件上传
需要的参数:FTP的IP地址、端口(默认21)、目录(FTP服务器上若没有该目录,则要创建目录)、用户名、密码。
注:用户要有读、写、建目录的权限。
1)将file2Ftp持久化,保存为一个InputStream变量里;
2)建立FTP链接;
3)将InputStream对象、目录信息上传至FTP
4)异常处理
### Java 实现 FTP 文件上传 为了实现通过 Java 将文件上传FTP 服务器,通常会使用 Apache Commons Net 库来简化操作。下面是一个完整的例子,展示了如何创建 FTP 客户端并执行文件上传。 #### Maven依赖配置 如果项目基于Maven构建,则需在`pom.xml`中加入Apache Commons Net库的依赖: ```xml <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.8.0</version> </dependency> ``` #### FTP客户端类定义 接下来展示一段用于连接指定FTP服务器并将本地文件传输上去的方法: ```java import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import java.io.FileInputStream; import java.io.IOException; public class FtpUploader { private static final String SERVER = "your.server.address"; private static final int PORT = 21; // 默认端口为21 private static final String USER = "ftptest"; // 用户名 private static final String PASS = "123456"; // 密码 public void uploadFile(String localFilePath, String remoteFileName) throws IOException { FTPClient ftpClient = new FTPClient(); try (FileInputStream inputStream = new FileInputStream(localFilePath)) { ftpClient.connect(SERVER, PORT); boolean loginSuccess = ftpClient.login(USER, PASS); if (!loginSuccess) throw new RuntimeException("登录失败"); ftpClient.enterLocalPassiveMode(); // 设置被动模式 ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // 使用二进制数据流 System.out.println("开始上传..."); boolean done = ftpClient.storeFile(remoteFileName, inputStream); if(done){ System.out.println("文件成功上传!"); }else{ System.out.println("文件上传失败"); } ftpClient.logout(); } catch (IOException ex) { ex.printStackTrace(); } finally { try { if (ftpClient.isConnected()) { ftpClient.disconnect(); } } catch (IOException ex) { ex.printStackTrace(); } } } } ``` 此代码片段实现了基本的功能需求,包括建立与FTP服务器之间的连接、验证身份以及实际传送文件的过程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值