• 使用ftp上传文件


    当初做这个的缘由是甲方要求用户上传的文件单独存放在另一台服务器上即文件服务器与项目所在服务器分离。

    第一步,安装Serv-U_FTP_Server,Serv-U FTP Server是一种被广泛运用的FTP服务器端软件。地址:http://www.downza.cn/soft/183848.html

    第二步引入相关jar包:

    <!-- https://mvnrepository.com/artifact/commons-net/commons-net -->
            <dependency>
                <groupId>commons-net</groupId>
                <artifactId>commons-net</artifactId>
                <version>3.6</version>
            </dependency>

    工具类:文件服务器在阿里云,注意主动模式和被动模式配置

        public static boolean storeFtpFile(String now,List<File> filelist,String storePath,String url,int port,String userName,String password) throws FileNotFoundException {
            FileInputStream fis = null;
            boolean result = false;
            FTPClient ftp = new FTPClient();
            ftp.setControlEncoding("UTF-8");
            ftp.setPassiveNatWorkaround(true);
            try {
                // 连接至服务器,端口默认为21时,可直接通过URL连接
                ftp.connect(url, port);
                // 登录服务器
                ftp.login(userName, password);
                // 判断返回码是否合法
                if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
                    // 不合法时断开连接
                    ftp.disconnect();
                    // 结束程序
                    return result;
                }
                // 判断ftp目录是否存在,如果不存在则创建目录,包括创建多级目录
                ftp.enterLocalActiveMode();
    //                        ftp.enterLocalPassiveMode(); 
                // 判断ftp目录是否存在,如果不存在则创建目录,包括创建多级目录
                String s = "/"+storePath;
                String[] dirs = s.split("/");
                ftp.changeWorkingDirectory("/");            
                    //按顺序检查目录是否存在,不存在则创建目录  
                    for(int i=1; dirs!=null&&i<dirs.length; i++) {  
                        if(!ftp.changeWorkingDirectory(dirs[i])) {  
                            if(ftp.makeDirectory(dirs[i])) {  
                                if(!ftp.changeWorkingDirectory(dirs[i])) {  
                                    return false;  
                                }  
                            }else {  
                                return false;                         
                            }  
                        }  
                    }  
                // 设置文件操作目录
                ftp.changeWorkingDirectory(storePath);
    
    //            ftp.makeDirectory(storePath);
                // 设置文件操作目录
                ftp.changeWorkingDirectory(storePath);
                // 设置文件类型,二进制
                ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
                // 设置缓冲区大小
                ftp.setBufferSize(3072);
                // 上传文件
                
                for(File file:filelist){
                    fis = new FileInputStream(file);
                    String filename=file.getName();
                    String type = FileTypeUtils.getFileType(filename);
                    String name = FileTypeUtils.getName(filename);
                    String ftpName=now+"."+type;
                    result = ftp.storeFile(ftpName, fis);
                    
                }
                
                // 关闭输入流
                fis.close();
                // 登出服务器
                ftp.logout();
            } catch (IOException e) {
                try {
                    // 判断输入流是否存在
                    if (null != fis) {
                        // 关闭输入流
                        fis.close();
                    }
                    // 判断连接是否存在
                    if (ftp.isConnected()) {
                        // 断开连接
                        ftp.disconnect();
                    }
                } catch (IOException e2) {
                    e2.printStackTrace();
                }
                e.printStackTrace();
            } finally {
                try {
                    // 判断输入流是否存在
                    if (null != fis) {
                        // 关闭输入流
                        fis.close();
                    }
                    // 判断连接是否存在
                    if (ftp.isConnected()) {
                        // 断开连接
                        ftp.disconnect();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }
  • 相关阅读:
    【原】 POJ 1308 Is It A Tree? 并查集树结构 解题报告
    终于决定投身Linux怀抱
    Inside the C++ Object Model
    Fedora 下 OpenCV 的安装
    sed 与 awk
    工具链接收藏
    [转] 计算机视觉领域稍微容易中的期刊
    QtCreator开发多文档编辑器(Project 1)
    Fedora 17: Grub Rescue
    做文档类的工作总是让我感到一些烦躁
  • 原文地址:https://www.cnblogs.com/dsh2018/p/9673659.html
Copyright © 2020-2023  润新知