import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.testng.annotations.Test;
/**
* 〈一句话功能简述〉<br>
* 〈功能详细描述〉
*
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class TestFtpClient {
/**
*
* 上传文件到FTP <br>
* 〈功能详细描述〉
*
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
@Test
public void testUploadFileToFtp() throws Exception {
// 获取本地文件对应的输入流
InputStream inputStream = new FileInputStream(new File(
"D:/software/数据库学习资料/03-业务培训(第三阶段)/业务练习/满意度统计报表/相关脚本.sql"));
// 连接到Ftp
FTPClient ftpClient = FtpClientUtils.connectFtp("10.87.14.51", 21, "test", "test");
// 上传文件到FTP
FtpClientUtils.uploadFileByInputStream("luxiaofeng/b", new String("相关脚本.sql".getBytes("GBK"), "ISO-8859-1"),
inputStream, ftpClient);
// 关闭连接
ftpClient.disconnect();
// 关闭输入流
inputStream.close();
}
}
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import com.suning.ids.client.util.StringUtils;
/**
* FTP操作的工具类<br>
* 〈功能详细描述〉
*
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class FtpClientUtils {
/**
*
* 功能描述: <br>
* 〈功能详细描述〉
*
* @param directory
* @param ftpClient
* @return
* @throws IOException
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static boolean createDirecroty(String directory, FTPClient ftpClient) throws Exception {
// 首先判断目录是否存在
if (ftpClient.changeWorkingDirectory(directory)) {
return true;
}
String[] dirs = directory.split("/");
for (String dir : dirs) {
if (StringUtils.isNotEmpty(dir)) {
// 如果目录不存在,则创建该目录
if (!ftpClient.changeWorkingDirectory(dir)) {
if (ftpClient.makeDirectory(dir)) {
ftpClient.changeWorkingDirectory(dir);
} else {
return false;
}
}
}
}
return true;
}
/**
*
* 连接到FTP <br>
* 〈功能详细描述〉
*
* @param host
* @param port
* @param username
* @param password
* @throws Exception
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static FTPClient connectFtp(String host, int port, String username, String password) throws Exception {
FTPClient ftpClient = new FTPClient();
ftpClient.connect(host, port);
ftpClient.login(username, password);
// 每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据,防止端口没有开启出现阻塞
ftpClient.enterLocalPassiveMode();
// 设置文件传输为二进制传输,默认为ASCII,二进制传输不会对文件内容作任何处理
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
return ftpClient;
}
/**
*
* 上传文件到FTP通过输入流的方式 <br>
* 〈功能详细描述〉
*
* @param ftpClient
* @param savePath
* @param fileName
* @param inputStream
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static void uploadFileByInputStream(String savePath, String fileName, InputStream inputStream,
FTPClient ftpClient) throws Exception {
// 创建上传的目录,存在则切换到该目录,不存在则创建该目录
if (createDirecroty(savePath, ftpClient)) {
ftpClient.storeFile(fileName, inputStream);
}
}
/**
*
* 从FTP下载文件到本地 <br>
* 〈功能详细描述〉
*
* @param remoteDir:远程文件目录
* @param remteFileName:远程文件名
* @param localFile:本地文件路径
* @param ftpClient:FTPClient
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static void downloadFtpFile2Local(String remoteDir, String remteFileName, String localFile,
FTPClient ftpClient) {
FileOutputStream fos = null;
// 首先判断远程文件目录是否存在
try {
if (ftpClient.changeWorkingDirectory(remoteDir)) {
fos = new FileOutputStream(localFile);
// 如果当前的文件类型(ftpClient.setFileType)是ASCII,行分隔符将转化为本地的格式
ftpClient.retrieveFile(new String(remteFileName.getBytes("GBK"), "ISO-8859-1"), fos);
}
} catch (Exception e) {
//日志
} finally {
// 关闭FTP连接
if (ftpClient != null) {
try {
ftpClient.disconnect();
} catch (IOException e) {
//日志
}
}
// 关闭输出流
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
//日志
}
}
}
}
}
分享到:
相关推荐
将本地文件夹(文件夹包含子文件夹以及文件)上传至服务器中
4. C# FTP上传代码示例:以下是一个简单的C# FTP文件上传示例,展示了如何连接服务器、设置目录并上传文件: ```csharp using System; using System.IO; using System.Net; public class FtpUploader { public ...
FTP是一种标准网络协议,用于在Internet上从一个服务器传输文件到另一个服务器,或者从本地计算机到远程服务器。在Labview中,我们可以创建VI(Virtual Instruments)来实现这一功能,这为自动化测试、数据采集和...
### Java上传文件到FTP知识点详解 #### 一、概述 在现代软件开发中,文件传输是一项常见的需求。其中,FTP(文件传输协议)是最常用的一种文件传输方式之一。本篇文章将详细阐述如何利用Java编程语言实现本地文件...
- 虽然C#本身不直接支持从FTP服务器读取文件内容,但可以结合上述下载步骤,先将文件下载到本地,然后读取本地文件内容。 例如,以下是一个简单的FTP文件上传示例: ```csharp using System; using System.IO; ...
在本案例中,"VC写的上传文件到FTP服务器的OCX控件"是一个利用VC++编写的ActiveX(OCX)控件,它的主要功能是在网页中实现文件的上传操作,这在Web应用中非常常见,尤其是需要用户提交文件的情况。 ActiveX控件是...
在PHP编程中,远程上传文件到FTP服务器是一项常见的任务,特别是在网站内容管理、文件分发或备份场景下。本文将详细讲解如何使用PHP实现这一功能,以及涉及的相关知识点。 首先,要实现远程上传,我们需要了解PHP的...
"Spring Boot 使用 FTP 方式上传文件到远程服务器" 在本文中,我们将详细介绍如何使用 Spring Boot 框架来实现 FTP 方式上传文件到远程服务器。FTP(File Transfer Protocol)是一种常用的文件传输协议,广泛应用于...
3、自动上传时需要配置上传文件所在本地的文件夹,也通过XML进行配置 4、本例中自动上传时文件名要包含当前时间yy_MM_dd(17_06_02)格式的字符串 5、本例自动上传时间为凌晨1点 6、本例的主要使用目的是:数据库自动...
通过以上步骤,我们就实现了Spring MVC应用中上传文件到FTP服务器的功能。用户可以通过Web界面选择文件并提交,后台服务则会将文件安全地传输到FTP服务器。这个功能在许多场景下都非常实用,比如文件共享、备份或...
c# 实现文件FTP上传至服务器 WebClient上传文件至服务器(不带进度条) 要上传的文件(全路径格式) <param name="strUrlDirPath">Web服务器文件夹路径 <returns>True/False是否上传成功</returns>
首先,我们需要创建一个FtpWebRequest对象,设置其请求方法为"STOR",这是FTP上传文件的命令。同时,我们需要指定FTP服务器的URL、用户名和密码,如下所示: ```csharp var request = (FtpWebRequest)WebRequest....
支持所有文件的上传/下载*上传/下载文件的大小限制参照相关配置文件
2. `上传文件`:此函数接收本地文件路径和远程服务器上的目标文件名,然后将本地文件上传至FTP服务器。 3. `上传文件夹`:此函数用于递归上传整个文件夹,可能会有额外的选项来控制是否覆盖已存在的文件。 4. `暂停...
在标题"使用wininet上传文件到ftp服务器"中,我们关注的核心就是如何利用`wininet`库进行FTP文件上传操作。 首先,我们需要理解FTP的基本工作流程。FTP客户端与服务器建立连接后,通过一系列的控制通道命令(如USER...
5. **文件上传**:使用`storeFile()`方法上传文件。你需要提供远程文件路径和一个InputStream,这个InputStream通常来自本地文件。 ```java File localFile = new File("C:\\local\\file.txt"); InputStream in = ...
实现FTP批量上传文件到指定目录功能的bat脚本: @echo off @echo delete iplist.txt @del iplist.txt @setlocal EnableDelayedExpansion @echo create upload iplist.... @for /L %%i in (51,1,52) do ( @echo ...
7. **上传文件**:`ftp.storeFile(remoteFilePath, fis);` 这里`remoteFilePath`是服务器上文件的目标路径。 8. **关闭连接**:操作完成后,记得关闭连接和流:`ftp.disconnect();` 和 `fis.close();` 在`...
- `Method`属性设置为`WebRequestMethods.Ftp.UploadFile`表示执行上传文件操作。 - **步骤3:打开文件流并读取文件内容** - 使用`FileStream`类打开待上传的文件,并读取其内容到缓冲区数组中。 - **步骤4:将...
FTP上传是指将本地计算机上的文件或文件夹传输到远程FTP服务器的过程。这通常在开发网站、部署应用或者共享文件时非常有用。在FTP客户端程序中,用户需要输入服务器的地址(FTP服务器主机名或IP地址)、用户名和密码...