zoukankan      html  css  js  c++  java
  • 静态资源上传至远程ftp服务器,ftp工具类封装

    工具类,是一个单独的工程项目

    提取必要信息至ftp.properties配置文件中

    ftp_host=192.168.110.128
    ftp_port=21
    ftp_username=ftpuser
    ftp_password=ftpuser
    ftp_dir=/home/ftpuser/jd
    ftp_url=http://www.images.com

    封装FtpUtils工具类

    public class FtpUtils {
        private static String ftp_host = null;
        private static String ftp_port = null;
        private static String ftp_username = null;
        private static String ftp_password = null;
        private static String ftp_dir = null;
        private static String ftp_url = null;
        //1、封装参数
        static{
            InputStream ris = FtpUtils.class.getClassLoader().getResourceAsStream("ftp.properties");
            Properties pp = new Properties();
            try {
                pp.load(ris);
                ftp_host = pp.getProperty("ftp_host");
                ftp_port = pp.getProperty("ftp_port");
                ftp_username = pp.getProperty("ftp_username");
                ftp_password = pp.getProperty("ftp_password");
                ftp_dir = pp.getProperty("ftp_dir");
                ftp_url = pp.getProperty("ftp_url");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        /****
         * 实现建文件上传到静态资源服务器
         */
        public static String uploadFile(String remote,InputStream local) {
            
            try {
                //创建FTPClient对象 
                FTPClient client=new FTPClient();
                //建立和ftp服务的链接
                client.connect(ftp_host, Integer.parseInt(ftp_port));
                //身份验证
                client.login(ftp_username, ftp_password);
                //设置上传的文件类型
                client.setFileType(FTP.BINARY_FILE_TYPE);
                //切换工作目录
                if(!client.changeWorkingDirectory(ftp_dir)) {
                    client.makeDirectory(ftp_dir);
                    client.changeWorkingDirectory(ftp_dir);
                }
                //上传
                client.storeFile(remote, local);
                
            }catch(Exception ex) {
                ex.printStackTrace();
            }
            return ftp_url+"/jd/"+remote;
        }
    }

    导入jar包版本:

    <!-- ftpclient客户端  -->
    <!--ftp文件上传-->
     <dependency>
           <groupId>commons-net</groupId>
           <artifactId>commons-net</artifactId>
           <version>3.3</version>
     </dependency>

    测试调用:

    /**
         * 处理上传图片请求
         */
        @Override
        public Map<String, Object> uploadImageService(MultipartFile mf) {
            // TODO Auto-generated method stub
            HashMap<String, Object> map = new HashMap<>();
            try {
                //文件重命名
                String oldName = mf.getOriginalFilename();
                String remote = IDUtils.genImageName()+oldName.substring(oldName.lastIndexOf("."));
    
                String url = FtpUtils.uploadFile(remote, mf.getInputStream());
                map.put("error", 0);
                map.put("url", url);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                map.put("error", 1);
                map.put("message", "上传失败");
                e.printStackTrace();
            }
            return map;
        }

    注:使用的是springboot,已经集成了ftp,所以没有配置相应的xml文件。

  • 相关阅读:
    C# IP地址与数字之间的互转
    C# 获取本机的所有ip地址,并过滤内网ip
    C# POST数据base64到接口会出错的问题
    C# 使用 Task 替换 ThreadPool ,异步监测所有线程(任务)是否全部执行完毕
    C# 线程池执行操作例子
    输入及词法分析详解
    用java实现编译器-算术表达式及其语法解析器的实现
    用java实现一个简易编译器-语法解析
    用java实现一个简易编译器1-词法解析入门
    模板方法模式
  • 原文地址:https://www.cnblogs.com/ncl-960301-success/p/11421162.html
Copyright © 2011-2022 走看看