这篇“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”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。