最近做ftp上传遇到问题,最终解决,现在分享给大家。
这里有四点:
1、将字符串转换成输入流
String s = "this is my test string 中国"; //将字符串转换成输入流 ByteArrayInputStream fis = new ByteArrayInputStream(s.getBytes());
2、设置编码
ftp.setControlEncoding("GBK");
3、设置为被动模式
ftp.enterLocalPassiveMode();
4、上传和下载文件名称编码,当文件名为中文时,上传下载可能需要编码
//上传文件名称 boolean fb = ftp.storeFile(new String("test中文.csv".getBytes("GBK"),"iso8859-1"), fis);
最终测试代码如下:
package ftpTest; import java.io.ByteArrayInputStream; import java.io.IOException; import org.apache.commons.net.ftp.FTPClient; public class ApacheFtpTest { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String s = "this is my test string 中国"; //将字符串转换成输入流 ByteArrayInputStream fis = new ByteArrayInputStream(s.getBytes()); FTPClient ftp = new FTPClient(); //host,端口 ftp.connect("127.0.0.1", 21); //必须设置,上传非iisc文件,如果不设置默认是iisc码格式传输,导致文件坏死 ftp.setFileType(FTPClient.BINARY_FILE_TYPE); //如果遍历文件名乱码,请设置为GBK,或者你需要的编码 ftp.setControlEncoding("GBK"); //超时时间必须设置,方式长时间连接没响应 ftp.setControlKeepAliveReplyTimeout(15000); ftp.setConnectTimeout(15000); ftp.setControlKeepAliveTimeout(15000); //设置被动模式,在很多情况下由于防火墙等原因,主动模式不支持。 ftp.enterLocalPassiveMode(); //帐户密码 ftp.login("帐户", "密码"); System.out.println("login success"); //服务器路径 ftp.changeWorkingDirectory("/"); //上传文件名称 ftp.storeFile("test.txt", fis); //上传文件名称 //boolean fb = ftp.storeFile(new String("test中文.csv".getBytes("GBK"),"iso8859-1"), fis); ftp.logout(); } }
相关推荐
FTPClient是其中的核心部分,提供了一系列接口和方法,使开发者能够方便地与FTP服务器交互,完成文件上传、下载、删除、重命名等操作。 FTPClient的主要功能包括: 1. **连接管理**:创建到FTP服务器的连接,登录和...
### Java FTPClient 文件上传下载知识点详解 #### 一、引言 在现代软件开发中,文件传输是一项基本而重要的功能。对于Java开发者来说,利用Java的FTPClient进行文件的上传和下载是常见的需求之一。本篇文章将围绕...
我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手。我在项目开发的过程中主要用到了文件的上传功能,希望大家能学的一些东西
总之,通过Apache Commons Net的FTPClient,我们可以方便地在Java应用中实现FTP文件上传,并通过设置正确的字符集来处理中文文件名。记住,确保正确处理连接、登录、错误处理和资源释放,以确保程序的稳定性和可靠性...
通过理解上述代码和相关API,开发者可以构建自己的FTP客户端,实现更复杂的文件上传、下载和管理功能。Apache Commons Net库不仅提供了FTPClient,还包括对其他网络协议的支持,是Java开发中的强大工具。
这篇博客“使用FTPClient实现文件的上传下载”显然关注的是如何利用编程接口FTPClient来执行FTP操作,如上传和下载文件。FTPClient是Apache Commons Net库的一部分,它为Java开发者提供了方便的API来实现FTP功能。 ...
本主题将深入探讨如何使用`FtpClient`类从Apache Commons Net库来实现文件上传功能。Apache Commons Net提供了丰富的FTP操作接口,使得开发者能够方便地执行包括上传、下载、删除等在内的各种FTP操作。 首先,我们...
4. 文件传输:`FTPClient.retrieveFile(String remote, OutputStream local)`用于从服务器下载文件,`FTPClient.storeFile(String remote, InputStream local)`用于上传文件。 5. 文件管理:可以使用`FTPClient....
3. **使用FTPClient进行文件上传** 要上传文件,首先需要创建FTPClient实例,然后连接到FTP服务器。接着,通过`FTPClient.connect()`方法建立连接,并使用`FTPClient.login()`方法登录。调用`FTPClient.setFileType...
使用Apache FTPClient,你可以执行基本的FTP操作,如登录服务器、改变工作目录、上传和下载文件、断点续传等。以下是一个简单的示例: ```java import org.apache.commons.net.ftp.*; FTPClient client = new ...
jftp是一个轻量级的FTP客户端库,支持基本的FTP操作,如文件上传、下载等。它的API设计直观,易于理解和使用。 ##### 基本使用 ```java import org.apache.commons.net.ftp.FTPClient; public class JFtpExample ...
org.apache.commons.net.ftp.FTPClient FTP工具类,实现上传、下载、压缩到输出流下载等功能
文件上传与下载** 文件的上传和下载是FTP操作的重要部分: - `FTPClient.storeFile(String remote, InputStream local)`:将本地文件流上传到远程服务器 - `FTPClient.retrieveFile(String remote, OutputStream ...
通过FTP,用户可以连接到远程服务器,进行文件的上传、下载、查看属性等操作。本篇文章将详细讲解如何编写源码来获取FTP服务器上的文件大小,这对于监控服务器存储空间或者自动化任务是非常实用的。 首先,我们需要...
以下是对`JAVA FTPClient文件操作`的详细说明: ### FTP基础知识 FTP是一种用于在网络上传输文件的标准协议,基于TCP/IP网络。它允许用户在本地计算机和远程服务器之间交换文件。FTP有两种模式:主动模式(Port)和...
FTPClient 是一个基于 Java 的 FTP 客户端库,提供了丰富的 FTP 操作 API,例如上传、下载、删除文件等。然而,在高并发场景下,频繁创建和销毁 FTPClient 对象可能会对服务器造成很大的压力。 为了解决这个问题,...
在Java中,进行FTP(File Transfer Protocol)文件操作时,通常会使用第三方库,如Apache的FTPClient、ftp4j和jftp等。本文将主要讲解如何使用Apache的FTPClient库进行FTP文件操作。 Apache.FTPClient是一个功能...
在Java中使用FTPClient进行文件上传与下载是一个常见的需求,特别是在需要远程管理文件或数据交换的场景下。本文将深入探讨如何使用Java中的FTPClient库实现这一功能,并提供详细的代码示例与解释。 ### FTPClient...
在Java中,我们可以使用`java.net`或`org.apache.commons.net`库来实现FTP文件上传。Apache Commons Net库提供了丰富的FTP功能,包括文件上传、下载、目录管理等,同时它也支持断点续传,对于大文件上传非常实用。 ...