这篇文章主要为大家详细介绍了java实现上传文件到FTP,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了java实现上传文件到FTP的具体代码,供大家参考,具体内容如下
需求说明:将指定文件上传到FTP,上传成功后修改文件名。
获取文件名及路径(这里是从数据库获取,所以前面的代码就不CV了)
/**
* 测试上传
* @param map 从数据库获取到的文件信息 (包含文件路径FILE_PATH 文件类型FILE_TYPE等信息)
*/
public void testUpdFtpFile(Map<String,Object> map){
/*上传附件到FTP*/
FileInputStream inputStream = null;
try {
//找到要上传的文件
String originfilename = "E:\\work\\files\\"+map.get("FILE_PATH").toString();
//转成流
inputStream = new FileInputStream(originfilename);
//上传后的文件名+文件类型
String ftpName = "上传到FTP后的文件名."+map.get("FILE_TYPE");
boolean updFtpFile = FtpClientFile.uploadFile(ftpName,inputStream);
if(updFtpFile){
//打印下日志
System.out.println(("=======文件已上传到FTP========"));
}
} catch (Exception e) {
throw new BusinessException("附件上传失败!");
}
}
FtpClientFile工具类方法
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import com.google.gson.JsonArray;
/**
* ftp 上传文件
* FTPClient commons.net 3.0.1版本
* @author Lenovo
*
*/
public class FtpClientFile {
private static final String hostname = "10.xx.xx.xx" ;//FTP IP
private static final int port = 21;//FTP 端口号
private static final String username = "ftpName";//FTP 登录账号
private static final String password = "ftpPsd"; //FTP 登录密码
private static final String pathname = "/";//FTP 工作路径
/**
* 上传文件(可供Action/Controller层使用)
* @param fileName 上传到FTP服务器后的文件名称
* @param inputStream 输入文件流
* @return
*/
public static boolean uploadFile(String fileName,FileInputStream inputStream){
boolean flag = false;
FTPClient ftpClient = new FTPClient();
//设置超时
ftpClient.setConnectTimeout(60*60*1000);
//设置编码
ftpClient.setControlEncoding("UTF-8");
try {
//连接FTP服务器
ftpClient.connect(hostname, port);
//登录FTP服务器
ftpClient.login(username, password);
//是否成功登录FTP服务器
int replyCode = ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(replyCode)){
return flag;
}
System.out.println("===========登录FTP成功了==========");
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//切换路径 创建路径
ftpClient.makeDirectory(pathname);
ftpClient.changeWorkingDirectory(pathname);
ftpClient.enterLocalPassiveMode();
//设置缓冲
ftpClient.setBufferSize(1024 * 1024 * 20);
//保持连接
ftpClient.setKeepAlive(true);
boolean a = ftpClient.storeFile(new String(fileName.getBytes("utf-8"),"iso-8859-1"), inputStream);
if(a){
System.out.println("===========创建文件成功=============="+a);
String fileName2 = fileName+"AAA";
boolean status = ftpClient.rename(fileName, fileName2);
if(status)
System.out.println("===========修改文件名称成功=============="+status);
}
inputStream.close();
ftpClient.logout();
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally{
if(ftpClient.isConnected()){
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}
/* public static void main(String[] args) {
String originfilename = "C:\\Users\\Lenovo\\Desktop\\xx.txt";
FileInputStream inputStream;
try {
inputStream = new FileInputStream(new File(originfilename));
boolean a = uploadFile("xx.txt","/104/",inputStream);
System.out.println("上传文件成功============"+a);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}*/
}
上传文件到FTP时 注意:是否有权限登录服务器/上传文件等操作。
默认在浏览器输入自己的ftp地址访问下看看 ftp://10.xx.xx.xx:端口号 登录看看
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:java实现上传文件到FTP
基础教程推荐
猜你喜欢
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- Java实现查找文件和替换文件内容 2023-04-06
- Java并发编程进阶之线程控制篇 2023-03-07
- java基础知识之FileInputStream流的使用 2023-08-11
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java文件管理操作的知识点整理 2023-05-19
- Java实现线程插队的示例代码 2022-09-03
- springboot自定义starter方法及注解实例 2023-03-31
- Java数据结构之对象比较详解 2023-03-07
- java实现多人聊天系统 2023-05-19