工具类,是一个单独的工程项目

提取必要信息至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工具类封装的更多相关文章

  1. 你知道哪些linux命令,能把文件上传到远程linux服务器

    多数情况下 企业的服务基本都是部署在linux服务器 那对于测试同学,必须掌握基本的linux命令   至少要知道怎么部署整体环境   部署过程中,经常需要的操作,是向服务器上传部署包   你一般都是 ...

  2. Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

    说明:  1.备份目录/home/osyunwei下面所有的文件到/home/osyunweibak里面,并且保存为osyunwei20120701.tar.gz的压缩文件格式(2012_07_01是 ...

  3. Linux下自动备份MySQL数据库并上传到远程FTP服务器

    Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本 说明:  1.备份MySQL数据库存放目录/var/lib/mysql下面的xshelldata数据库 ...

  4. sftp上传到远程服务器

    开发遇到一个需求,需要将图片通过sftp上传到远程服务器上,之前没用过这个功能,折腾了我好几天才搞定,下面记录下我的处理方法: $sftp = 'ssh2.sftp://';//连接sftp $con ...

  5. SSH 远程上传本地文件至服务器

    使用SSH命令行传输文件到远程服务器   以前一直在windows下用SSH Secure Shell连接远程服务器,它自带了一个可视化的文件传输工具,跟ftp差不多 但是它也存在一个缺陷,不支持编码 ...

  6. MySQL执行sql查询并上传至远程服务器

    最近项目中有需要做一个shell脚本,可以对一个数据库执行sql操作,并将结果转为txt,筛选结果用tab隔开,保存至一个远程服务器上,以供其他人用Excel读取用txt中的内容. MySQL中将结果 ...

  7. Linux下远程备份、上传工程,重启服务器

    Linux下远程备份.上传工程,重启服务器 Linux服务器实现远程,原项目的备份.删除,新项目上传,以及远程重启服务器!分成一个主shell调用三个shell文件步骤完成.mainsh.sh一次按顺 ...

  8. 让thinkphp 支持ftp上传到远程,ftp删除

    让thinkphp真正的支持FTP上传.删除. 原创by default7#zbphp.com,如需转载请保留作者信息. /** * This is not a free software, All ...

  9. linux自动备份文件 并上传到远程服务器 脚本实现

    (1)在服务器上创建备份目录,并赋予权限       mkdir -p /backup/bakdata  #新建数据备份目录(2)完成备份脚本操作新建脚本文件      vi bakdata.sh添加 ...

随机推荐

  1. ajax与重定向

    网上有不少说法ajax的请求url浏览器不会重定向的说法是片面的,正常是这样的: 当服务器将302响应发给浏览器时,浏览器并不是直接进行ajax回调处理,而是先执行302重定向——从Response ...

  2. STL——sort函数的实现原理

    实现原理 sort结合了快速排序.堆排序.直接插入排序三种排序方法. 根据不同的数量级别以及不同情况,能自动选用合适的排序方法.当数据量较大时采用快速排序,分段递归.一旦分段后的数据量小于某个阀值,为 ...

  3. ASP.NET开发实战——(四)ASP.NET MVC是如何运行的?它的生命周期是什么?

    前面的文章我们使用ASP.NET MVC创建了个博客应用,那么它是如何工作的呢?我们都知道ASP.NET的程序需要部署到IIS上才能够通过浏览器来访问,那么IIS与ASP.NET MVC程序之间又是如 ...

  4. Linux性能优化实战学习笔记:第四十八讲

    一.上节回顾 上一节,我们一起学习了如何分析网络丢包的问题,特别是从链路层.网络层以及传输层等主要的协议栈中进行分析. 不过,通过前面这几层的分析,我们还是没有找出最终的性能瓶颈.看来,还是要继续深挖 ...

  5. 练习题 vue_01:

    目录 练习题: vue_01 点击事件控制标签颜色: 点击次数控制标签的样式: 周期性实现标签的旋转变色: 每日一题: http协议,https与http的区别: 前端页面布局的方式 框架内orm的功 ...

  6. Optical Flow Estimation 发展历程 (1)

    Optical flow estimation Traditional Method Variational approach TVL-1 Deep Method Supervised FlowNet ...

  7. [******] java多线程连续打印abc

    题目描述 建立三个线程A.B.C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印. 5种方法 使 ...

  8. Linux 启动数据库报错:could not open parameter file init**.ora

    sqlplus /nolog.conn /as sysdba.startup命令后显示 SQL> startupORA-01078: failure in processing system p ...

  9. java线程池模拟并发

    public class CountDownLatchTest1 implements Runnable{ final AtomicInteger number = new AtomicInteger ...

  10. Adams宏导出

    var set var=ip integer_value=1 var set var=macro_name str="" for variable_name=the_macro o ...