使用 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. IT编年史 技术生命周期起步,成长,成熟和衰退四个阶段 IT历史总结

    IT编年史 最近查看了大量的正史或者野史,体会了整个IT夜发展的风气云涌,颇为激动,撰写如下. 感谢google黑板报的浪潮之巅http://googlechinablog.com/2007/07/a ...

  2. 使用java修改图片DPI

    修改以后可以直接用PS打开看效果 全部使用rt下的类,无需下载其他jar包 import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.imag ...

  3. magento的一些小技巧(转)

    1.加载某个attribute: $attributeCode=Mage::getModel('catalog/resource_eav_attribute')                    ...

  4. k8s官方安装版本

    一.概述 官方安装链接:https://kubernetes.io/docs/getting-started-guides/kubeadm/ 之前使用是yum直接安装组件,现由kubeadm来自动安装 ...

  5. window 10 企业版激活

    一. 用管理员权限打开CMD.EXE 接着输入以下命令: slmgr /ipk NPPR9-FWDCX-D2C8J-H872K-2YT43 弹出窗口提示:“成功的安装了产品密钥”. 继续输入以下命令: ...

  6. MongoDB学习笔记(4)--collection

    MongoDB 创建集合 本章节我们为大家介绍如何使用 MongoDB 来创建集合. MongoDB 中使用 createCollection() 方法来创建集合. 语法格式: db.createCo ...

  7. 实现超级简单的bug管理系统

    大家可以试着去实现一个超级简单的bug管理系统 不需要鉴权,也就是不需要登陆 有tag管理功能,缺陷上可以加tag,通过tag区分bug的状态和类型 bug的增删改查功能 bug描述支持markdow ...

  8. 在C语言中除法运算为什么没有小数部分?

    原文链接: http://wenda.tianya.cn/question/4e096f010317a93d 除法运算符" / ",如果是两个整数相除结果为整数如果需要保留小数时 ...

  9. debian 8 解压安装mysql(版本5.7.19)

    debian 8 解压安装mysql(版本5.7.19)一.下载 根据目标主机的型号官网下载mysql安装包如: mysql-server_5.7.19-1debian8_amd64.deb-bund ...

  10. mysql错误号代表的含义

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除 ...