ftp工具类
㈠ ftp主动,被动模式----附代码
http://blog.csdn.net/wumenglu1018/article/details/54233826
主动模式:
被动模式:
主动FTP:
命令连接:客户端 大于1024 端口 -> 服务器 21 端口
数据连接:客户端 大于1024 端口 <- 服务器 20 端口
被动FTP:
命令连接:客户端 大于1024 端口 -> 服务器 21 端口
数据连接:客户端 大于1024 端口 -> 服务器 大于1024 端口
简要总结:
办法:
例:
Class FTPParam : FTP所需参数
Class FTPUtil: ftp工具类
㈡ java上传文件到局域网的ftp服务器上,用户不需要等待
点击提交之后,你启动一个线程去完成上传的工作就行,没有必要用队列,除非是你的文件特别大,一般上传文件还是很快的。Apache有专门的ftp处理工具类的。
㈢ ftpclient的工具类支持linux吗
支持,linux直接安装client就可以了,yum install ftp -y 就可以直接安装了,当然你要配置好yum源
㈣ FTPClient 踩坑记录(开启日志)
先说结论,我最后才发现, 只要把这个工具类的日志打开 , 很多问题就浮出水面了 。因为FTPClient本身是没有日志的,里面连接错误,权限确实,读取失败他全部都不告诉你!!其实调试很多系统都是这样,
使用ftpClient操作ftp为我们提供方便的同时,也屏蔽了很多对我们调试有用的信息。其实很多时候,去调试一个不熟悉的东西,首先就是要查看日志,最开始我只是见一步走一步,一步一步的调试ftpClient的源码才发现问题所在。但是只要开启了服务端和客户端的日志,问题就好解决了!
㈤ SpringBoot项目集成FTP
FTP是一个文件传输协议,被开发人员广泛用于在互联网中文件传输的一套标准协议。
而我们通常在开发过程中也要通过FTP来搭建文件系统,用于存储系统文件等。
目前正值SpringBoot热潮,所以我们接下来会一起学习一下SpringBoot如何集成FTP,以及相关的FTP组件包,还有其主要提供的几个方法。
当然在这系列文章结尾,我们还会给出确切的FTP操作工具类,算是一些小成果,希望和大家共勉。
我在此就不介绍如何安装FTP了,但是我可以推荐给大家一些软件作为选择。
Linux版本,推荐使用vsftpd进行搭建FTP,只需要改指定的几个配置,添加上用户即可。
Windows版本,推荐使用Serv-U进行搭建FTP,图形化界面,有中文版,操作起来很简单。
这里我们对FTP相关的组件包使用的是edtFTPj,其实之前很多人都选择的是Java自带的包来实现FTP功能的。
在我们的SpringBoot项目中pom.xml下添加以下依赖。
更新maven进行引入,然后我们进行下一步。
引入两个工具类。
我这里先贡献一下代码,请大家酌情作为参考。
㈥ (FTP文件传送服务)是什么意思
文件传输协议FTP(File Transfer Protocol)是Internet传统的服务之一。FTP使用户能在两个联网的计算机之间传输文件,它是Internet传递文件最主要的方法。
ftp的功能包括上传和下载两部分:
下载:登录远程ftp服务器后,将服务器提供的文件通过网络传输到本地计算机的过程;
上传:登录远程ftp服务器后,将本地计算机上的文件通过网络传输到远程服务器进行存储的过程。
㈦ 使用java向ftp上传图片上传失败,无异常,但是刷新ftp目录没有创建文件,这是我网上扒的工具类代码
我也不是很会但是我感觉你的路径不能填写IP必需是以电脑的绝对路径吧.
㈧ ftp java 下载的时候怎么保存到指定位置
通过工具类来实现本地路径定义和下载即可。
import hkrt.b2b.view.util.Log;
import hkrt.b2b.view.util.ViewUtil;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
public class CCFCCBFTP {
/**
* 上传文件
*
* @param fileName
* @param plainFilePath 明文文件路径路径
* @param filepath
* @return
* @throws Exception
*/
public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FTPClient ftpClient = new FTPClient();
String bl = "false";
try {
fis = new FileInputStream(plainFilePath);
bos = new ByteArrayOutputStream(fis.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = fis.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
Log.info("加密上传文件开始");
Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
FTPFile[] fs;
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(filepath)) {
bl="true";
ftpClient.changeWorkingDirectory("/"+filepath+"");
}
}
Log.info("检查文件路径是否存在:/"+filepath);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon( "查询文件路径不存在:"+"/"+filepath);
return bl;
}
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}
/**
*下载并解压文件
*
* @param localFilePath
* @param fileName
* @param routeFilepath
* @return
* @throws Exception
*/
public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FileOutputStream fos = null;
FTPClient ftpClient = new FTPClient();
String SFP = System.getProperty("file.separator");
String bl = "false";
try {
Log.info("下载并解密文件开始");
Log.info("连接远程下载服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
CMBCUtil.CMBCLOGINPASSWORD);
FTPFile[] fs;
ftpClient.makeDirectory(routeFilepath);
ftpClient.changeWorkingDirectory(routeFilepath);
bl = "false";
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
bl = "true";
Log.info("下载文件开始。");
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream is = ftpClient.retrieveFileStream(fileName);
bos = new ByteArrayOutputStream(is.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = is.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
fos = new FileOutputStream(localFilePath+SFP+fileName);
fos.write(bos.toByteArray());
Log.info("下载文件结束:"+localFilePath);
}
}
Log.info("检查文件是否存:"+fileName+" "+bl);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("查询无结果,请稍后再查询。");
return bl;
}
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (fos != null) {
try {
fos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}
// 调用样例:
public static void main(String[] args) {
try {
// 明文文件路径
String plainFilePath = "D:/req_20150204_0011.txt";
// 密文文件路径
String secretFilePath = "req_20150204_00134.txt";
fileDownloadByFtp("D://123.zip","123.zip","req/20150228");
} catch (Exception e) {
e.printStackTrace();
}
}
}
㈨ 救火,如何用JAVA实现FTP多文件上传
新建一个web工程,用来测试上传功能。搭建好从前台访问后台的整个框架,并测试是否能接受参数。从apache官网上下载jar包,这里我们需要的jar包共三个,从官网或者其他途径都可以下载得到。编写上传的工具类。工具类主要是涉及两个方法,首先是连接服务器的方法。和我们平常常用的连接数据库等的方法类似,需要有服务器名,用户名和密码。第二个主要的方法就是上传的方法,上传的方法接受一个文件,这里需要注意的,需要去判断传入的是一个文件还是一个文件夹,如果是文件夹,需要循环进行文件上传处理。写方法调用工具类里的方法,并测试上传功能。这里需要注意的是连接服务器的端口号,20表示连接服务器,21表示有上传操作。
㈩ java ftp 有哪些工具类
java ftp 最常用的是apache commons-net
commons-net项目中封装了各种网络协议的客户端,支持的协议包括:
FTP
NNTP
SMTP
POP3
Telnet
TFTP
Finger
Whois
rexec/rcmd/rlogin
Time (rdate) and Daytime
Echo
Discard
NTP/SNTP
其他的还有FTP4J ,jftp