apache ftpClient 文件上传
2013-08-27 09:28
239 查看
最近做ftp上传遇到问题,最终解决,现在分享给大家。
这里有四点:
1、将字符串转换成输入流
Java代码
String s = "this is my test string 中国";
//将字符串转换成输入流
ByteArrayInputStream fis = new ByteArrayInputStream(s.getBytes());
2、设置编码
Java代码
ftp.setControlEncoding("GBK");
3、设置为被动模式
Java代码
ftp.enterLocalPassiveMode();
4、上传和下载文件名称编码,当文件名为中文时,上传下载可能需要编码
Java代码
//上传文件名称
boolean fb = ftp.storeFile(new String("test中文.csv".getBytes("GBK"),"iso8859-1"), fis);
最终测试代码如下:
Java代码
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();
}
}
这里有四点:
1、将字符串转换成输入流
Java代码
String s = "this is my test string 中国";
//将字符串转换成输入流
ByteArrayInputStream fis = new ByteArrayInputStream(s.getBytes());
2、设置编码
Java代码
ftp.setControlEncoding("GBK");
3、设置为被动模式
Java代码
ftp.enterLocalPassiveMode();
4、上传和下载文件名称编码,当文件名为中文时,上传下载可能需要编码
Java代码
//上传文件名称
boolean fb = ftp.storeFile(new String("test中文.csv".getBytes("GBK"),"iso8859-1"), fis);
最终测试代码如下:
Java代码
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();
}
}
相关文章推荐
- apache FtpClient上传下载删除文件夹及文件
- org.apache.commons.net.ftp.FTPClient文件上传下载,中文乱码
- 使用Apache-FTPClient完成文件上传和从配置文件中读取properties的使用
- Apache FTPClient上传下载文件
- nginx+tomcat使用apache的FtpClient上传图片时由于多线程问题导致的文件大小为0的问题
- org.apache.commons.net.ftp.FTPClient上传、下载、修改文件等功能
- nginx+tomcat使用apache的FtpClient上传图片时由于多线程问题导致的文件大小为0的问题
- FTP文件的上传和下载---org.apache.commons.net.ftp.FTPClient
- FTP文件的上传和下载---org.apache.commons.net.ftp.FTPClient
- apache ftpClient 多网卡上传文件超时解决。
- Apache FTPClient操作文件上传下载及公共类
- Apache FTPClient操作文件上传下载及公共类
- org.apache.commons.net.ftp.FTPClient上传文件大小改变的解决方法
- Apache FTPClient操作文件上传下载及公共类
- Apache FTPClient上传文件时的问题及解决
- org.apache.commons.net.ftp.FTPClient----根据文件名,路径检索文件 FTP上传 下载 删除文件
- Apache Http Client 4 上传多个文件 (示例代码可在 github 上找到)
- JAVA中使用FTPClient实现文件上传下载(键人岐)
- java通过apache ftp实现ftp上传文件,下载文件
- C# FTPClient--FTP操作帮助类,上传下载,文件,目录操作