Commons.net FTPClient 上传文件

使用 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();
                }
            }
        }
    }

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值