zoukankan      html  css  js  c++  java
  • 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();
                    }
                }
            }
        }
    

      

  • 相关阅读:
    Token ,Cookie和Session的区别
    极致Web性能 —— SPA性能指南
    关于前端数据&逻辑的思考
    移动端Retina屏boder 1px显示为2px或3px的解决方法
    Java连载8-基本数据类型2
    HTML连载25-通配符选择器&选择器综合练习
    Python连载25-函数tell&write&writeline$&持久化
    Python连载24-函数list&read&seek
    Java连载7-变量&数据类型
    HTML连载24-属性选择器(下)
  • 原文地址:https://www.cnblogs.com/vipsoft/p/6604485.html
Copyright © 2011-2022 走看看