zoukankan      html  css  js  c++  java
  • 使用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;
        }
  • 相关阅读:
    Android支付接入(7):Google In-app-Billing
    SDK接入(2)之Android Google Play内支付(in-app Billing)接入
    Google In-App Billing 实现(内含Unity 实现经验)
    unity3d如何快速接入渠道SDK之Unity篇
    [Unity3D]Unity+Android交互教程——让手机"动"起来
    mysql avg()函数,获取字段的平均值
    mysql tan() 函数
    mysql pi() 获取pi
    mysql mod() 获取余数
    mysql sqrt() 函数
  • 原文地址:https://www.cnblogs.com/dsh2018/p/9673659.html
Copyright © 2011-2022 走看看