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

      

  • 相关阅读:
    Android开发 使用 adb logcat 显示 Android 日志
    【嵌入式开发】向开发板中烧写Linux系统-型号S3C6410
    C语言 结构体相关 函数 指针 数组
    C语言 命令行参数 函数指针 gdb调试
    C语言 指针数组 多维数组
    Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用
    C语言 内存分配 地址 指针 数组 参数 实例解析
    CRT 环境变量注意事项
    hadoop 输出文件 key val 分隔符
    com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Too many connections
  • 原文地址:https://www.cnblogs.com/vipsoft/p/6604485.html
Copyright © 2011-2022 走看看