java怎么实现上传文件到FTP
作者:OpenWorld
时间:2023-04-26
来源:互联网
浏览:0
需求说明:将指定文件上传到FTP,上传成功后修改文件名。获取文件名及路径(这里是从数据库获取,所以前面的代码就不CV了)/***测试上传*@parammap从数据库获取到的文件信息(包含文件路径FILE_PATH文件类型FILE_TYPE等信息)*/publicvoidtestUpdFtpFile(Mapmap){/*上传附件到FTP*/FileInputStreaminputStream=null;try{//找到要上传的文件Stringoriginfilename="E:\\work\\files\\
需求说明:将指定文件上传到FTP,上传成功后修改文件名。
获取文件名及路径(这里是从数据库获取,所以前面的代码就不CV了)
/** * 测试上传 * @param map 从数据库获取到的文件信息 (包含文件路径FILE_PATH 文件类型FILE_TYPE等信息) */ public void testUpdFtpFile(Mapmap){ /*上传附件到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:端口号 登录看看

作者最新文章
三星 Galaxy A08 渲染图曝光:Helio G99 芯片与 6000mAh 电池配置解析
2026-09-08 17:14
OPPO Find X10 Pro Max 影像规格详解:三颗2亿像素镜头与全焦段8K视频能力
2026-09-08 16:41
PDF转HTML在线转换器怎么选?转换后网页排版怎么查?
2026-09-04 11:02
AE教程书籍挑选指南:零基础、动效与合成方向实战标准
2026-09-02 13:31
教程书籍使用SAI软件Logo要单独授权吗:商标引用与出版合规要点
2026-09-02 11:50
上一篇:
Java怎么实现插入公式到PPT中
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















