静态资源上传至远程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文件。
静态资源上传至远程ftp服务器,ftp工具类封装的更多相关文章
- 你知道哪些linux命令,能把文件上传到远程linux服务器
多数情况下 企业的服务基本都是部署在linux服务器 那对于测试同学,必须掌握基本的linux命令 至少要知道怎么部署整体环境 部署过程中,经常需要的操作,是向服务器上传部署包 你一般都是 ...
- Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本
说明: 1.备份目录/home/osyunwei下面所有的文件到/home/osyunweibak里面,并且保存为osyunwei20120701.tar.gz的压缩文件格式(2012_07_01是 ...
- Linux下自动备份MySQL数据库并上传到远程FTP服务器
Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本 说明: 1.备份MySQL数据库存放目录/var/lib/mysql下面的xshelldata数据库 ...
- sftp上传到远程服务器
开发遇到一个需求,需要将图片通过sftp上传到远程服务器上,之前没用过这个功能,折腾了我好几天才搞定,下面记录下我的处理方法: $sftp = 'ssh2.sftp://';//连接sftp $con ...
- SSH 远程上传本地文件至服务器
使用SSH命令行传输文件到远程服务器 以前一直在windows下用SSH Secure Shell连接远程服务器,它自带了一个可视化的文件传输工具,跟ftp差不多 但是它也存在一个缺陷,不支持编码 ...
- MySQL执行sql查询并上传至远程服务器
最近项目中有需要做一个shell脚本,可以对一个数据库执行sql操作,并将结果转为txt,筛选结果用tab隔开,保存至一个远程服务器上,以供其他人用Excel读取用txt中的内容. MySQL中将结果 ...
- Linux下远程备份、上传工程,重启服务器
Linux下远程备份.上传工程,重启服务器 Linux服务器实现远程,原项目的备份.删除,新项目上传,以及远程重启服务器!分成一个主shell调用三个shell文件步骤完成.mainsh.sh一次按顺 ...
- 让thinkphp 支持ftp上传到远程,ftp删除
让thinkphp真正的支持FTP上传.删除. 原创by default7#zbphp.com,如需转载请保留作者信息. /** * This is not a free software, All ...
- linux自动备份文件 并上传到远程服务器 脚本实现
(1)在服务器上创建备份目录,并赋予权限 mkdir -p /backup/bakdata #新建数据备份目录(2)完成备份脚本操作新建脚本文件 vi bakdata.sh添加 ...
随机推荐
- Django orm进阶查询(聚合、分组、F查询、Q查询)、常见字段、查询优化及事务操作
Django orm进阶查询(聚合.分组.F查询.Q查询).常见字段.查询优化及事务操作 聚合查询 记住用到关键字aggregate然后还有几个常用的聚合函数就好了 from django.db.mo ...
- NOIP 2012 Vigenère 密码
洛谷 P1079 Vigenère 密码 https://www.luogu.org/problemnew/show/P1079 JDOJ 1779: [NOIP2012]Vigenèr密码 D1 T ...
- MySQL学习记录(导入Excel表到数据库,并筛选条件输出)
附上:重置mysql账号密码方法 ubuntu系统下mysql重置密码和修改密码操作 - skh2015java的博客 - CSDN博客(改完重启,登录mysql要root/sudo权限) Cento ...
- shell 读取yaml 之 shyaml
安装shyaml pip3. install shyaml file.yaml文件内容---idc_group: name: bx bx: news_bx: news_bx web3_bx: web3 ...
- mysql 类型自动化转换问题
mysql 类型自动化转换问题 背景 有个业务需求,使用到find_in_set函数,简单贴下,如下: SELECT FIND_IN_SET('b','a,b,c,d'); //返回值为2,即第2个 ...
- Oracle 11g的一些常用语句记录
一.表空间 1.创建临时表空间: create temporary tablespace project_temp tempfile 'D:\Oracle\dataspace\project_temp ...
- iphone 移动端操作记录
iPhone和Safari浏览器的后退按钮操作,是直接载入缓存中的页面,不会加载js文件,不会执行ready,onload函数,但是加载html页面会跑pageshow事件,因此有回退动作需要重新加载 ...
- Linux内核中的并发与竞态概述
1.前言 众所周知,Linux系统是一个多任务的操作系统,当多个任务同时访问同一片内存区域的时候,这些任务可能会相互覆盖内存中数据,从而造成内存中的数据混乱,问题严重的话,还可能会导致系统崩溃. 2. ...
- 洛谷疯狂coding~
1.关于数学建模思想在coding之中的应用. 将马路作为一条数轴,每棵树的位置作为数轴上的坐标点,再将坐标点与数组的下标联系到一起,完成建模. 2.本题坑点在于对“其中有多少个数,恰好等于集合中另外 ...
- 出师表(ENGLISH) 强烈打call啊~王洛勇是什么神仙英语
臣亮言:先帝创业未半而中道崩殂, Permit me to observe: the late emperor was taken from us before he could finish his ...