tangzy
2021-08-09 735a26759084d5fca25f9ad48c2f3f1299246854
1.上传
3 files modified
2 files added
258 ■■■■■ changed files
pom.xml 11 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/information/controller/FtpUploadFile.java 134 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/information/controller/FtpUtil.java 95 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/information/controller/InformationController.java 16 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/information/controller/OutJson.java 2 ●●● patch | view | raw | blame | history
pom.xml
@@ -206,7 +206,16 @@
            <artifactId>pinyin4j</artifactId>
            <version>2.5.1</version>
        </dependency>
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>1.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
    </dependencies>
    <build>
src/main/java/org/springblade/modules/information/controller/FtpUploadFile.java
New file
@@ -0,0 +1,134 @@
package org.springblade.modules.information.controller;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
public class FtpUploadFile {
    private final static Log logger = LogFactory.getLog(FtpUploadFile.class);
    /**
     * 获取ftpClient对象
     * @param ftpHost FTP服务器地址
     * @param ftpUserName 登录FTP服务器用户名
     * @param ftpPassword 登录FTP服务器密码
     * @param ftpPort FTP服务器端口
     * @return
     */
    public static FTPClient getFTPClient(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort) {
        FTPClient ftpClient = new FTPClient();
        //ftpClient.setControlEncoding("GBK"); // 传输的字符编码(防止乱码),自带的编码是ISO-8859-1,一般不会出现乱码
        //超时时间(防止僵死)
        //ftpClient.setDataTimeout(1000*60);
        //ftpClient.setDefaultTimeout(1000*60);
        //工作流的大小
        //ftpClient.setBufferSize(1024*4);
        //主被动模式(应对FTP服务器的相关安全设置)
        ftpClient.enterLocalPassiveMode();
        //ftpClient.enterLocalActiveMode();
        try {
            ftpClient.connect(ftpHost, ftpPort);  // 连接FTP服务器
            if(ftpClient.isConnected()) {
                //使用用户名和密码登录
                if(ftpClient.login(ftpUserName, ftpPassword)) {
                    //判断FTP连接是否可用,源码中是通过判断ReplyCode值(200=< reply <300)
                    if(FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
                        logger.info("FTP连接成功。");
                        System.out.println("FTP登录成功,ftpHost: ftp:/"+ftpClient.getRemoteAddress());
                        ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
                    }
                }else {
                    logger.info("未连接到FTP,用户名或密码错误。");
                    ftpClient.disconnect();
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
            logger.info("FTP的IP地址可能错误,请正确配置。");
        } catch (IOException e) {
            e.printStackTrace();
            logger.info("FTP的端口错误,请正确配置。");
        }
        return ftpClient;
    }
    /**
     * 上传文件
     * @param ftpHost FTP服务器地址
     * @param ftpUserName 登录FTP服务器用户名
     * @param ftpPassword 登录FTP服务器密码
     * @param ftpPort FTP服务器端口
     * @param ftpPath 上传到FTP服务器的指定目录
     * @param filename 上传的文件名
     * @param input 文件输入流
     * @return 成功返回true,否则返回false
     */
    public static boolean uploadFile(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort, String ftpPath, String filename, InputStream input) {
        boolean result = false;
        FTPClient ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
        try {
            int reply;
            reply = ftpClient.getReplyCode(); //用户名密码错误时,值是530
            if (!FTPReply.isPositiveCompletion(reply)) { //判断是否成功登录
                //ftpClient.disconnect(); //用户名密码错误时报空指针,是因为在用户名密码不正确时,在上面已执行disconnect操作
                return result;
            }
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
            ftpClient.makeDirectory(ftpPath); //目录不存在则创建目录
            ftpClient.changeWorkingDirectory(ftpPath); //切换到要上传的目录
            //编码文件名,支持中文文件名
            filename = new String(filename.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING);
            //上传文件
            if (!ftpClient.storeFile(filename, input)) {
                System.out.println("文件已存在"); //应该是判断文件是否已存在服务器上
                return result;
            }
            input.close();
            ftpClient.logout();
            result = true;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (NullPointerException e){
            e.printStackTrace();
        } finally {
            if (ftpClient.isConnected()) {
                try {
                    ftpClient.disconnect();
                } catch (IOException e) {}
            }
        }
        return result;
    }
    public static void main(String[] args) {
        String ftpHost = "192.168.0.109";
        String ftpUserName = "anonymous";
        String ftpPassword = "";
        int ftpPort = 21;
        //String ftpPath = "";  //目录名, ""表示根目录
        String ftpPath = "";  //目录名最好是英文,中文目录暂时还未成功上传
        String fileName = "fz.py"; //要上传的文件名
        //上传文件
        try{
            FileInputStream in=new FileInputStream(new File("D:\\" + fileName)); //要上传的文件所在的目录,这里放的是D盘的根目录下
            Boolean result = FtpUploadFile.uploadFile(ftpHost, ftpUserName,  ftpPassword, ftpPort, ftpPath, fileName, in);
            if(result){
                System.out.println(fileName+"文件上传成功");
            }else{
                System.out.println(fileName+"文件上传失败");
            }
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}
src/main/java/org/springblade/modules/information/controller/FtpUtil.java
New file
@@ -0,0 +1,95 @@
package org.springblade.modules.information.controller;
import sun.net.ftp.FtpClient;
import sun.net.ftp.FtpProtocolException;
import java.io.*;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.ArrayList;
import java.util.List;
public class FtpUtil {
    FtpClient ftpClient;
    /**
     * 连接FTP服务
     *
     * @param url           //IP地址
     * @param port//端口号
     * @param username//用户名
     * @param password//密码
     * @return
     */
    public static FtpClient connectFTP(String url, int port, String username, String password) {
        //创建ftp
        FtpClient ftp = null;
        try {
            //创建地址
            SocketAddress addr = new InetSocketAddress(url, port);
            //连接
            ftp = FtpClient.create();
            ftp.connect(addr);
            //登陆
            ftp.login(username, password.toCharArray());
            ftp.setBinaryType();
        } catch (FtpProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return ftp;
    }
    /**
     * 取ftp上的文件内容
     *
     * @param ftpFile
     * @param ftp
     * @return
     */
    public static List<String> download(String ftpFile, FtpClient ftp) {
        List<String> list = new ArrayList<String>();
        String str = "";
        InputStream is = null;
        BufferedReader br = null;
        try {
            // 获取ftp上的文件
            is = ftp.getFileStream(ftpFile);
            //转为字节流
            br = new BufferedReader(new InputStreamReader(is));
            while ((str = br.readLine()) != null) {
                list.add(str);
            }
            br.close();
        } catch (FtpProtocolException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return list;
    }
    public static void main(String[] args) {
        FtpClient ftp = connectFTP("192.168.0.109",21,"anonymous","");
            List<String> list = download("D:\\anbao", ftp);
        for (int i = 0; i < list.size(); i++) {
            String strOut = null;
            if (list.get(i).toString() != null) {
                try {
                    byte[] bs = list.get(i).toString().getBytes();
                    strOut = new String(bs, "utf-8");
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            System.out.println(strOut);
            System.out.println(list.get(i).toString());
        }
    }
}
src/main/java/org/springblade/modules/information/controller/InformationController.java
@@ -263,14 +263,14 @@
        return R.data(list);
    }
    public static void main(String[] args) {
        Information information = new Information();
        information.setAddress("2");
        information.setDepartmentid("123");
        String json=JSON.toJSONString(information);//关键
        com.util.OutJson.createJsonFile(json,"d:/anbao/information/","informationSave");
        System.out.println("生成文件完成!");
    }
//    public static void main(String[] args) {
//        Information information = new Information();
//        information.setAddress("2");
//        information.setDepartmentid("123");
//        String json=JSON.toJSONString(information);//关键
//        com.util.OutJson.createJsonFile(json,"d:/anbao/information/","informationSave");
//        System.out.println("生成文件完成!");
//    }
}
src/main/java/org/springblade/modules/information/controller/OutJson.java
@@ -1,4 +1,4 @@
package com.util;
package org.springblade.modules.information.controller;
import java.io.File;
import java.io.FileOutputStream;