java实现上传文件到FTP
短信预约 -IT技能 免费直播动态提醒
本文实例为大家分享了java实现上传文件到FTP的具体代码,供大家参考,具体内容如下
需求说明:将指定文件上传到FTP,上传成功后修改文件名。
获取文件名及路径(这里是从数据库获取,所以前面的代码就不CV了)
public void testUpdFtpFile(Map<String,Object> map){
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;
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 工作路径
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;
}
}
上传文件到FTP时 注意:是否有权限登录服务器/上传文件等操作。
默认在浏览器输入自己的ftp地址访问下看看 ftp://10.xx.xx.xx:端口号 登录看看
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341