静态资源上传至远程ftp服务器,ftp工具类封装
2024-08-30 04:55:53
工具类,是一个单独的工程项目
提取必要信息至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文件。
最新文章
- iOS开发系列--Swift进阶
- [转]Nodejs基础中间件Connect
- Operate blob data in Oracle via C#
- 聊聊IO多路复用之select、poll、epoll详解
- hadoop环境搭建遇到问题集锦
- Recover deleted pictures in iOS 9
- Nginx 403 error
- 三种读写XML的方法
- 食品药检所LIMS需求分析说明书
- [经典] 最X(长 | 大和 | 大积)Y(子序列 | 子字符串)
- 关于php输入$_post[‘’]报错的原因
- JS于string 和 json互转对象
- 将github上的项目源码导入到eclipse中
- PE文件简介
- ATL右键文件菜单
- 【强大美观易用的图像编辑器】Pixelmator Pro 1.2 for Mac
- C#并发集合(转)
- java 多态的好处
- P3811 【模板】乘法逆元
- 原生android(二)——认识activity
热门文章
- Dubbo支持的注册中心(二)
- JDOJ 3055: Nearest Common Ancestors
- NOIP 2004 合唱队形
- python的可变类型和不可变类型
- 数据结构——链队列(linked queue)
- 使用jQuery的replaceWith()方法要注意的地方
- [LeetCode] 272. Closest Binary Search Tree Value II 最近的二分搜索树的值之二
- [LeetCode] 234. Palindrome Linked List 回文链表
- Maven 的 classifier 的作用
- (98)address already in use: ah00072: make_sock: could not bind to address 0.0.0.0:80