Java实现文件上传到服务器(FTP方式)
Java实现文件上传到服务器(FTP方式)
1,jar包:commons-net-3.3.jar
2,实现代码:
//FTP传输到数据库服务器
private boolean uploadServerByFtps(){
boolean flag = true;
//获取客户端数据文件路径
String client_path = Pub.getPropertiesValue("analysis", "analysis.client.data.path");
//获取数据库服务器上的存放数据文件路径
String server_path = Pub.getPropertiesValue("analysis", "analysis.server.data.path"); String hostname = Pub.getPropertiesValue("analysis", "ftp.hostname");
String ftpusername = Pub.getPropertiesValue("analysis", "ftp.username");
String ftppwd = Pub.getPropertiesValue("analysis", "ftp.pwd");
int port = 21;
logger.info("ftp server infor:hostname:"+hostname+" ftpusername:"+ftpusername+" ftppwd:"+ftppwd+" port:"+port); //遍历客户端数据文件路径下的txt文件,然后采用FTP上传
File client_dir = new File(client_path);
if(!client_dir.exists()){
logger.info("The file directory on the host you want to read does not exist");
return flag;
}
File client_files[] = client_dir.listFiles();
if(client_files.length == 0){
logger.info("You want to read the file directory without any files");
return flag;
}
//开始遍历文件
//创建ftp客户端
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("GBK");
for(int i=0;i<client_files.length;i++){
String getfileName = client_files[i].getName();
String getfileNamePath = client_files[i].getPath();
//只对txt文件做处理
if((getfileName.substring(getfileName.lastIndexOf(".")).trim().equals(".txt"))){
//todo:增加控制文件(已经传输过的文件)的传输 try {
//链接ftp服务器
ftpClient.connect(hostname, port);
//登录ftp
ftpClient.login(ftpusername, ftppwd);
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
logger.info("Returns a 530 password username error or the current user does not have permission to close the FTP connection");
return false;
}
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
// ftpClient.makeDirectory("path");//在root目录下创建文件夹
String server_file_name = server_path+ getfileName;
logger.info("server_file_name>>>>>>: " + server_file_name);
logger.info("getfileNamePath>>>>>>: " + getfileNamePath); //读取源文件流(客户端文件)
InputStream client_fileInput = new FileInputStream(getfileNamePath);
//传送到服务端
ftpClient.storeFile(server_file_name, client_fileInput);//文件你若是不指定就会上传到root目录下
client_fileInput.close();
ftpClient.logout();
logger.info("ftp is success");
} catch (SocketException e) {
// TODO Auto-generated catch block
logger.info("port problem: "+e.toString());
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
logger.info("IO problem: "+e.toString());
e.printStackTrace();
} catch (Exception e) {
logger.info("ftp problem: "+e.toString());
e.printStackTrace();
}finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException ioe) {
ioe.printStackTrace();
logger.info("IO problem: "+ioe.toString());
}
} }
}
} return flag;
}
Java实现文件上传到服务器(FTP方式)的更多相关文章
- H5+JAVA的文件上传,断点续传
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- Java Web文件上传
参考资料:http://www.cnblogs.com/xdp-gacl/p/4200090.html 一.问题描述 Java Web文件上传需要借助一些第三方库,常用的是借助Apache的包,有两个 ...
- CentOS下安装配置NFS并通过Java进行文件上传下载
1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...
- java 大文件上传 断点续传 完整版实例 (Socket、IO流)
ava两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路: 1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操 ...
- java的文件上传和下载 抄袭别人的.在底部有说明.
=======后续 这里采用的是输出流的方式,我电脑装的是windows系统,测试没有问题,但是当把项目放到Linux系统上跑时,就会出现保存位置错误的情况, 指定的路径就会被当做文件名的一部分保存了 ...
- java大文件上传解决方案
最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...
- Java超大文件上传解决办法
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- java进行文件上传,带进度条
网上看到别人发过的一个java上传的代码,自己写了个完整的,附带源码 项目环境:jkd7.tomcat7. jar包:commons-fileupload-1.2.1.jar.commons-io-1 ...
- java实现文件上传下载
喜欢的朋友可以关注下,粉丝也缺. 今天发现已经有很久没有给大家分享一篇技术文章了,于是想了一下给大家分享一篇java实现文件上传下载功能的文章,不喜欢的希望大家勿喷. 想必大家都知道文件的上传前端页面 ...
随机推荐
- INSERT INTO 语句
语法 INSERT INTO 表名称 VALUES (值1, 值2,....) 我们也可以指定所要插入数据的列: INSERT INTO table_name (列1, 列2,...) VALUES ...
- Android Framewrork资源类型有哪些?
1. Google Framework res frameworks/base/core/res/res/values <public type="attr" name=&q ...
- Cordova 3.0 初步使用
主要参考 http://docs.phonegap.com/en/3.0.0/guide_cli_index.md.html#The%20Command-line%20Interface Cordov ...
- bootstrap之辅助类
类 描述 .pull-left 元素浮动到左边 .pull-right 元素浮动到右边 .center-block 设置元素为 display:block 并居中显示 .clearfix 清除浮动 . ...
- js嵌套轮播图
$(function(){ var navLi = $(".top_nav").find("li"), conDiv = $(".top_con&qu ...
- ios 更改全局UINavigationBar的背景图片以及通知栏颜色
1.更改UINavigationController push 到另一个界面返回按钮的title self.navigationController.navigationBar.topItem.bac ...
- 大规模网站sesson会话保持思路及实践配置
1.需求: 请教个问题:我用lvs的rr模式,(考虑过 ipvsadm -p,但是这样就失去了负载均衡的意义感觉),后端有10台web,用一台memcached专门用于存储session文件,但是现在 ...
- Linux常用命令大全(转载)
最近都在和Linux打交道,这方面基础比较薄弱的我只好买了本鸟哥的书看看,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因, ...
- reflect 机制
1: Class.forName的作用?为什么要用? 答:调用该访问返回一个以字符串指定类名的类的对象. 2: 通过反射,有几种方法可以实例化Class类对象? 3种,第一种:Class.forNam ...
- 安装MySQL与安装Hive
安装mysql 检查是否安装mysql: rpm -qa |grep mysql 删除已经安装的mysql: rpm -e mysql-libs-5.1.71-1.el6.x86_64 报错:因为my ...