zoukankan      html  css  js  c++  java
  • ftputil 下载图片工具类

    
    
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPReply;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;

    import java.io.*;


    public
    class FtpUtils { private static final Logger logger = LoggerFactory.getLogger(FtpUtils.class); private static FTPClient ftpClient; /** *@Description ftp登录 *@Param [ftpHost, ftpUserName, ftpPassword, ftpPort] *@return org.apache.commons.net.ftp.FTPClient **/ public static FTPClient getFTPCLient(String ftpHost,String ftpUserName,String ftpPassword,int ftpPort){ try{ ftpClient = new FTPClient(); //连接FTP服务器 ftpClient.connect(ftpHost,ftpPort); //登录FTP服务器 ftpClient.login(ftpUserName,ftpPassword); //设置编码格式(支持中文) // ftpClient.setControlEncoding("UTF-8"); //设置传输格式为二进制 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.enterLocalPassiveMode(); if(!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){ logger.error("未连接到FTP,用户名或密码错误"); ftpClient.disconnect(); }else{ logger.info("FTP连接成功"); } }catch(Exception e){ logger.error(HikLog.toLog("ftp connect error",e); } return ftpClient; } /** *@Description 判断ftp是否连接成功 *@Param [] *@return boolean **/ public static boolean isConnect(){ if (ftpClient!=null && ftpClient.isConnected()){ return FTPReply.isPositiveCompletion(ftpClient.getReplyCode()); }else{ logger.info("ftp连接断开"); return false; } } /** *@Description 关闭ftp连接 *@Param [] *@return void **/ public static void close(){ if (ftpClient!=null && ftpClient.isConnected()){ try{ ftpClient.logout(); ftpClient.disconnect(); }catch(Exception e){ logger.error("ftp close error",e); } } } /** *@Description 检查文件是否存在 *@Param [ftpPath] *@return boolean **/ public static boolean isFileExist(String ftpPath){ boolean result = true; try{ ftpClient.listFiles(ftpPath); }catch(Exception e){ result = false; logger.error("check file error",e); } return result; } /** *@Description 从ftp上下载图片 *@Param [filePath, fileName] *@return java.lang.String **/ public static String downloadPic(String filePath,String fileName) { InputStream is = null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] data = null; String picBASE64 = ""; if (isFileExist(filePath)){ try{ ftpClient.changeToParentDirectory(); ftpClient.changeWorkingDirectory(filePath); is = ftpClient.retrieveFileStream(fileName);
    // 程序运行在windows操作系统,下载的文件名称有中文时,可以用下面的两行代码
    // ftpClient.changeWorkingDirectory(new String(filePath.getBytes("UTF-8"),"iso-8859-1")); // is = ftpClient.retrieveFileStream(new String(fileName.getBytes("UTF-8"),"iso-8859-1")); byte[] buffer = new byte[1024]; int n = 0; if (is!=null){ while(-1 != (n = is.read(buffer))){ baos.write(buffer,0,n); } data = baos.toByteArray(); BASE64Encoder encoder = new BASE64Encoder(); picBASE64 = encoder.encode(data); is.close(); }else{ logger.error("ftp获取文件流失败",e); } }catch(Exception e){ logger.error("download error",e); } } return picBASE64; } }
  • 相关阅读:
    vue实现简单的点击切换颜色
    Controller层注解详解
    分布式数据库系统的透明性概念
    utf8和utf8mb64的关系
    数据库设计的四个阶段
    IDEA自定义启动图
    编译过程划分
    Linux 之 CentOS 7 安装Tomcat9
    Linux 之 CentOS 7 安装JDK1.8
    Linux 之 CentOS 7安装MySQL5.7
  • 原文地址:https://www.cnblogs.com/heamin/p/12714846.html
Copyright © 2011-2022 走看看