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