使用 Commons.net FTPClient 上传 文件打不开。

原因,FTPClient 默认使用 ASCII 传输文件,FTP.ASCII_FILE_TYPE;

需要在登录代码后重新指定传输方式。

    public static void main(String[] args) {
FTPClient ftpClient = new FTPClient();
try {
// 连接指定服务器,默认端口为21
ftpClient.connect("XXX.XXX.XXX.XXX",921);
System.out.println("connect to server");
// 默认是 ISO-8859-1 设置成 UTF-8 读文件时防止文件名出现乱码
ftpClient.setControlEncoding("UTF-8");
// 获取响应字符串(FTP服务器上可设置)
String replyString = ftpClient.getReplyString();
System.out.println("replyString: " + replyString); // 获取响应码用于验证是否连接成功
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
System.out.println(reply);
System.exit(1);
}
// 登录服务器
boolean login = ftpClient.login("iron", "iron"); //不知道空用户名密码怎么使用。
if (login) {
System.out.println("登录成功!");
} else {
System.out.println("登录失败!");
}
//默认为ASCII_FILE_TYPE,修改成BINARY_FILE_TYPE防止文件打不开
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// 获取所有文件和文件夹的名字 // 生成InputStream用于上传本地文件
InputStream in = new FileInputStream("D:\\Libraries\\Desktop\\QQ截图20170321150849.jpg");
// 上传文件--防止中文名出现乱码。需要将文件名做特殊处理
boolean result = ftpClient.storeFile(new String("QQ截图3.jpg".getBytes("UTF-8"),"iso-8859-1"), in);
//框架提供了多种上传方法
//ftpClient.appendFileStream(String remote) throwsIOException
//ftpClient.appendFile(String remote,InputStream local) throws IOException
//ftpClient.storeFileStream(String remote) throwsIOException
//ftpClient.storeFile(String remote,InputStream local) throws IOException
if (result) {
System.out.println("上传成功!");
}
in.close();
//查看FTP中的文件
FTPFile[] files = ftpClient.listFiles();
for (FTPFile file : files) {
if (file.isDirectory()) {
System.out.println(file.getName() + " 是文件夹");
}
if (file.isFile()) {
System.out.println(file.getName() + " 是文件");
}
}
// 注销登录
boolean logout = ftpClient.logout();
if (logout) {
System.out.println("注销成功!");
} else {
System.out.println("注销失败!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭链接需要放在finally语句块中
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

  

Commons.net FTPClient 上传文件的更多相关文章

  1. 解决FTPClient上传文件为空,显示0字节

    JAVA使用FTPClient上传文件时总是为空,而使用FileZilla客户端时却不会. 后来查了下资料,FTP服务器有被动模式和主动模式.(具体查另外资料) 在JAVA中将FTPClient设置为 ...

  2. FtpClient上传文件速度非常慢,而且大小为0,上传失败

    问题发生: 环境:VSFTP+FTPClient+Client 使用FTPClient上传文件的时候总是卡住,而且文件大小为0,上传失败, 解决方案: 添加代码:调用FTPClient的enterLo ...

  3. java FTPClient 上传文件 0kb 问题

    解决方法: 1.本地防火墙关闭了2.服务端端防火墙关闭 CentOS 7.0关闭默认防火墙启用iptables防火墙 操作系统环境:CentOS Linux release 7.0.1406(Core ...

  4. 使用Commons FileUpload 1.3.3和Servlet 3.0上传文件

    简介 Commons FileUpload可以轻松地为web应用程序添加强大,高性能的文件上传功能.Servlet3.0之前的web应用程序需要使用Commons FileUpload组件上传文件,但 ...

  5. Spring Boot 使用 ServletFileUpload上传文件失败,upload.parseRequest(request)为空

    使用Apache Commons FileUpload组件上传文件时总是返回null,调试发现ServletFileUpload对象为空,在Spring Boot中有默认的文件上传组件,在使用Serv ...

  6. 解析Spring MVC上传文件

    新建一个普通的maven工程 在pom.xml文件中引入相应的坐标 <?xml version="1.0" encoding="UTF-8"?> & ...

  7. 【FTP】C# System.Net.FtpClient库连接ftp服务器(上传文件)

    如果自己单枪匹马写一个连接ftp服务器代码那是相当恐怖的(socket通信),有一个评价较高的dll库可以供我们使用. 那就是System.Net.FtpClient,链接地址:https://net ...

  8. 上传文件出错:org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly

    最近做一个web项目中有上传文件的功能,已经写出并在本地和部署到服务器上测试了好几个文件上传都没问题(我用的是tomcat).后来又上传了一个700多K的文件(前边的都是不足600K的,并且这个wor ...

  9. java使用ftp上传文件

    ftpServer是apache MINA项目的一个子项目,它实现了一个ftp服务器,与vsftpd是同类产品.Filezilla是一个可视化的ftp服务器. ftp客户端也有很多,如Filezill ...

随机推荐

  1. 树莓派进阶之路 (023) - Windows下用串行连接控制树莓派(转)

    转载:http://shumeipai.nxez.com/2014/05/04/under-windows-serial-connection-control-raspberry-pi.html 在没 ...

  2. hadoop遇到的问题及处理

    1:杀掉hadoop作业 列出作业 ./hadoop job -list 杀掉 ./hadoop job -kill job_id 1:某些节点出现running asprocess XXX. Sto ...

  3. 微信支付服务器CA证书更换服务器安装der证书的方法 DigiCert的根证书

    [重要]微信支付服务器证书更换通知,请开发人员验证以免影响交易 尊敬的微信支付商户&服务商: 因微信支付HTTPS服务器证书的根CA证书将于2018年8月23日到期失效,微信支付计划于2018 ...

  4. Kibana常用命令

    一.范围(>500) totalTime: [500 TO *] 二.不等于 NOT monitorName: "XXX" 三.字符匹配 正则表达式:    +url:/.* ...

  5. MySQL -- 外键创建失败

    使用show engine innodb status\G 查看数据库状态的时候,发现以下报错信息: ------------------------ LATEST FOREIGN KEY ERROR ...

  6. 两张图看清SharePoint 2013 Farm 逻辑体系结构

    前篇文章分析了SharePoint 2013 的物理拓扑结构.物理拓扑分为3层(2层),详情参见<SharePoint 2013 Farm (多层服务器)安装指南——Least Privileg ...

  7. C#基础第一天-作业答案

    题一答案: Console.WriteLine("请输入a"); int a = Convert.ToInt32(Console.ReadLine()); Console.Writ ...

  8. tensorflow中使用Batch Normalization

    在深度学习中为了提高训练速度,经常会使用一些正正则化方法,如L2.dropout,后来Sergey Ioffe 等人提出Batch Normalization方法,可以防止数据分布的变化,影响神经网络 ...

  9. grafana + influxdb + telegraf

    grafana + influxdb + telegraf , 构建性能监控平台http://www.cnblogs.com/Scissors/p/5977670.html https://docs. ...

  10. php分享十二:分组取前N记录

    经常看到问题,如何取出每组的前N条记录 http://blog.csdn.net/acmain_chm/article/details/4126306 问题:有表 如下,要求取出各班前两名(允许并列第 ...