静态资源上传至远程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文件。

 

posted @ 2019-08-27 22:13  小菜鸟大梦想  阅读(632)  评论(0编辑  收藏  举报