/**
* 下载文件到指定目录
* @param filePath String
* @param response HttpServletResponse
* @throws ApplicationException
*/
public void downloadFileToClient(String fileName,String webDirectoryAndFileName) throws Exception{
FTPClient ftpClient = new FTPClient();
InputStream is = null;
FileOutputStream os = null;
try {
/*建立连接*/
server = SystemParameter.getParameterValue("SYS_IDC_FTP_HOST");
user = SystemParameter.getParameterValue("SYS_IDC_FTP_USER");
password = SystemParameter.getParameterValue("SYS_IDC_FTP_PASSWORD");
port = SystemParameter.getParameterValue("SYS_IDC_FTP_PORT");
String workHome = SystemParameter.getParameterValue("SYS_IDC_FTP_WORK_HOME");
ftpClient.connect(server);
ftpClient.login(user, password);
String remoteFileName = workHome+"/"+fileName;
boolean Flag= findName(remoteFileName);
if(!Flag)
{
throw new ApplicationException("没找到您所下载的文件,请检查文件名是否正确");
}
// 设置文件的传输类型,默认是ASCII,修改为二进制
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
is = ftpClient.retrieveFileStream(remoteFileName);
File outfile = new File(webDirectoryAndFileName);
os = new FileOutputStream(outfile);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) > 0)
{
os.write(bytes, 0, c);
}
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("FTP客户端出错!", e);
}
finally
{
if (is != null)
is.close();
if (os != null)
os.close();
ftpClient.logout();
ftpClient.disconnect();
}
}
-------------
/**
* 下载文件
* @param filePath String
* @param response HttpServletResponse
* @throws ApplicationException
*/
public void downloadFile(String fileName,OutputStream out) throws Exception{
FTPClient ftpClient = new FTPClient();
try {
/*建立连接*/
server = SystemParameter.getParameterValue("SYS_IDC_FTP_HOST");
user = SystemParameter.getParameterValue("SYS_IDC_FTP_USER");
password = SystemParameter.getParameterValue("SYS_IDC_FTP_PASSWORD");
port = SystemParameter.getParameterValue("SYS_IDC_FTP_PORT");
String workHome = SystemParameter.getParameterValue("SYS_IDC_FTP_WORK_HOME");
ftpClient.connect(server);
ftpClient.login(user, password);
String remoteFileName = workHome+"/"+fileName;
boolean Flag= findName(remoteFileName);
if(!Flag)
{
throw new ApplicationException("没找到您所下载的文件,请检查文件名是否正确");
}
//设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.retrieveFile(remoteFileName, out);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("FTP客户端出错!", e);
}
finally
{
ftpClient.logout();
ftpClient.disconnect();
}
}
--------
/**
* 建立FTP连接
* @param server String
* @param user String
* @param password String
* @param path String
*/
private void connectServer(String server,String user,String password,String port) throws Exception{
ftpClient = new FTPClient();
try {
if(port!=null && port.length()>0)
{
int ftpPort = Integer.parseInt(port);
ftpClient.connect(server,ftpPort);
int reply = ftpClient.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
throw new Exception("ftp 服务器拒绝连接");
}
ftpClient.login(user,password);
log.info("你已成功连接到"+server+"服务器"+"\n");
log.info("端口是"+ftpPort+"\n");
}
} catch (IOException ex) {
throw new Exception(ex);
}
}
/**
* 关闭连接
* @throws ApplicationException
*/
private void closeConnect() throws ApplicationException{
try {
ftpClient.logout();
ftpClient.disconnect();
log.info("正常退出文件服务器");
} catch (IOException ex) {
throw new ApplicationException(ex);
}
}
------
/**
* 上传文件
* @param uploadFile File
* @param outputPath String
* @return boolean
* @throws ApplicationException
*/
public void fileUpload(String path,String outPutName) throws Exception{
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;
try {
/*建立连接*/
server = SystemParameter.getParameterValue("SYS_IDC_FTP_HOST");
if(server==null || "".equals(server)){
server = "**";
}
user = SystemParameter.getParameterValue("SYS_IDC_FTP_USER");
if(user==null || "".equals(user)){
user = "**";
}
password = SystemParameter.getParameterValue("SYS_IDC_FTP_PASSWORD");
if(password==null || "".equals(password)){
password = "**";
}
port = SystemParameter.getParameterValue("SYS_IDC_FTP_PORT");
if(port==null || "".equals(port)){
port = "21";
}
String workHome = SystemParameter.getParameterValue("SYS_IDC_FTP_WORK_HOME");
if(workHome==null || "".equals(workHome)){
workHome = "/idcfile2";
}
ftpClient.connect(server,Integer.valueOf(port));
ftpClient.login(user, password);
File srcFile = new File(path);
fis = new FileInputStream(srcFile);
//设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//String currentPath = creatOutputPath(outPutName);
String currentPath = workHome+"/"+outPutName;
ftpClient.changeWorkingDirectory(path);
ftpClient.storeFile(currentPath, fis);
fis.close();
ftpClient.logout();
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("FTP客户端出错!", e);
}
}
分享到:
相关推荐
在本文中,我们将深入探讨如何使用`org.apache.commons.net.ftp.FTPClient`包来实现简单的文件下载功能。这个过程涉及到几个关键步骤,包括连接到FTP服务器、登录、设置传输模式、下载文件以及断开连接。 首先,你...
这篇博客“使用FTPClient实现文件的上传下载”显然关注的是如何利用编程接口FTPClient来执行FTP操作,如上传和下载文件。FTPClient是Apache Commons Net库的一部分,它为Java开发者提供了方便的API来实现FTP功能。 ...
### 使用FTPClient下载文件并解决含有中文路径的问题 在日常工作中,我们经常需要与服务器进行文件传输操作。其中,FTP(File Transfer Protocol)是最常见的文件传输协议之一。然而,在实际使用过程中,尤其是涉及到...
Java 中使用 FTPClient 实现上传下载文件 Java 中使用 FTPClient 实现上传下载文件是 Java 程序中经常需要和 FTP 打交道的重要内容。FTPClient 是 Jakarta Commons 中的一个工具类,位于 Commons Net 包中。...
### Java FTPClient 文件上传下载知识点详解 #### 一、引言 在现代软件开发中,文件传输是一项基本而重要的功能。对于Java开发者来说,利用Java的FTPClient进行文件的上传和下载是常见的需求之一。本篇文章将围绕...
org.apache.commons.net.ftp.FTPClient FTP工具类,实现上传、下载、压缩到输出流下载等功能
FTPClient是Java中实现FTP功能的一个库,它提供了丰富的API,使得开发者能够方便地与FTP服务器进行交互,包括上传、下载和删除文件。在这个项目中,我们将会深入探讨如何使用FTPClient来完成这些操作。 首先,要...
使用BackgroundWorker 实现文件下载、异步提示 准备做一个可视化的WinForm界面,这就需要反映文件下载进度,要达到这个实时报告进度的功能,就需要进行异步操作,可以通过线程或BackgroundWorker 类去实现, 由于...
4. **文件上传与下载**:这是FTP的主要用途,FTPClient提供了上传本地文件到服务器,以及从服务器下载文件到本地的功能。 5. **数据传输模式**:FTP有两种数据传输模式,主动(PORT)模式和被动(PASV)模式。...
Java编写的FTPClient是用于与FTP(文件传输协议)服务器交互的一个客户端程序,它使得开发者能够在Java应用程序中实现上传和下载文件的功能。FTP是互联网上一个标准的服务,它允许用户在计算机之间传输文件,通常...
在Java程序中,使用FTPClient可以方便地实现文件的上传和下载。 2. **FTP文件上传**: - 首先,通过`FTPClient.connect()`方法建立与FTP服务器的连接。连接时可以指定主机名(URL)和端口号。默认FTP端口是21,如果...
在本文中,我们将深入探讨如何使用Java的`FTPClient`库来实现从FTP服务器下载所有文件及子目录的功能。这个任务的关键在于实时性、文件结构的保持以及递归遍历FTP目录。首先,我们需要理解`FTPClient`的基本操作,如...
在Java中使用FTPClient进行文件上传与下载是一个常见的需求,特别是在需要远程管理文件或数据交换的场景下。本文将深入探讨如何使用Java中的FTPClient库实现这一功能,并提供详细的代码示例与解释。 ### FTPClient...
Delphi XE3使用ICS的FTPClient从FTP服务器下载文件,本人用来实现客户端软件自动升级功能,提供从FTP下载文件的源码供大家参考。之前用的IdFTP连接服务器经常出现10054错误,参考网上的意见使用ICS的FTPClient解决了...
除了基本的上传和下载,`FtpClient`还提供了其他功能,如文件列表查询、目录操作、文件属性获取与修改、断点续传、文件权限管理等。例如,我们可以使用`GetListing`获取远程目录的文件列表,使用`CreateDirectory`...
此外,`FtpClient`还提供了许多其他功能,如获取文件列表、修改文件权限等。确保根据具体需求调整和扩展上述代码。 总结一下,使用`FtpClient`类在Java中上传文件涉及到以下关键步骤: 1. 引入Apache Commons Net库...
System.Net.FtpClient是一个用于C#编程中的FTP客户端库,其主要功能是提供方便、强大的FTP文件上传和下载能力。这个库编译后生成的System.Net.FtpClient.dll文件,为开发者提供了与FTP服务器交互的接口,极大地简化...
功能描述: 建立FTP链接 支持代理 多种重载的同步上传文件 多种重载的异步上传文件 多种重载的同步下载文件 多种重载的异步下载文件 上传文件的进度百分比 下载文件的进度白分比 有区分...
总之,`FTPClient`不仅提供了基本的文件上传和下载功能,还通过支持断点续传等高级特性,大大增强了文件传输的可靠性和效率。对于需要频繁与FTP服务器交互的应用程序而言,熟练掌握`FTPClient`的使用是非常有必要的...
下面将详细阐述Java FTP下载的基本原理、FTPClient库的使用方法以及如何实现FTP文件下载。 FTP是一种标准的网络协议,用于在客户端和服务器之间进行文件传输。在Java中,我们可以使用`java.net.Socket`和`java.io`...