springboot以FTP方式上传文件到远程服务器
此处远程服务器是ubuntu,关于ftpserver的配置请参考该文https://blog.csdn.net/sunxiaoju/article/details/85224602,在此处就不再赘述。该篇文章主要针对如何实现代码来进行代码干货的分享。
本小编用的前台为layui框架。话不多说直接上干货,代码没什么好解释的,直接贴出前后台代码以供大家分享使用。
一、html代码
<div class="layui-form-item"><label class="layui-form-label">上传附件:</label><div class="layui-input-block doc-litpic"><button type="button" name="avatar" class="layui-btn layui-btn-sm" data-url="/admin/archives/upload.html" id="larry-litpic"><i class="layui-icon"></i>本地上传</button><a id="upload-filename-display" style="color: blue" href=""></a><div class="larryms-img-view"></div></div></div>
二、js代码
upload.render({accept: 'file',elem: '#larry-litpic',url: interface_cms_article_upload,field: 'fileNames',done : function (res, index, upload) {if(res.code != 200){layer.open({icon : 2,skin : "layui-layer-molv",content : res.msg});}else{layer.open({icon : 1,skin : "layui-layer-molv",content : res.msg});$('#upload-filename-display').text(res.filename);$("input[name='fileId']").val(res.filename);}},error : function (res) {}});
三、后台controller:
@RequestMapping(value = "/upload")@ApiOperation(value = "本地文件上传",notes ="本地文件上传" )public Map uploadfunction(HttpServletRequest request, HttpServletResponse response){//创建文件对象并获取请求中的文件对象MultipartFile file = null;Map resultData = new HashMap();try{MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;file = mRequest.getFile("fileNames");//判断上传非空if(null == file) {resultData.put("code",0);resultData.put("msg","上传文件失败");resultData.put("filename",file.getOriginalFilename());return resultData;}//上传需要导入数据的文件//用来检测程序运行时间long startTime=System.currentTimeMillis();System.out.println("上传的文件名为:"+file.getOriginalFilename());String fileName = file.getOriginalFilename();InputStream inputStream = file.getInputStream();String hostName = uploadUtil.getHostname();String username = uploadUtil.getUsername();String password = uploadUtil.getPassword();String targetPath = uploadUtil.getTargetPath();String suffix = cmsArticleService.getSuffix(fileName);fileName = cmsArticleService.upload(hostName,username,password,targetPath,suffix,inputStream);//计算上传时间long endTime=System.currentTimeMillis();String uploadTime = String.valueOf(endTime-startTime);System.out.println("上传所用时间:"+uploadTime+"ms");resultData.put("code",200);resultData.put("msg","上传文件成功");resultData.put("filename",fileName);return resultData;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}
四、后台service上传至远程服务器
//FTP文件上传public static String upload(String hostname,String username,String password,String targetPath,String suffix,InputStream inputStream) throws SocketException, IOException {//实例化ftpClientFTPClient ftpClient = new FTPClient();//设置登陆超时时间,默认是20sftpClient.setDataTimeout(12000);//1.连接服务器ftpClient.connect(hostname,21);//2.登录(指定用户名和密码)boolean b = ftpClient.login(username,password);if(!b) {System.out.println("登陸超時");if (ftpClient.isConnected()) {// 断开连接ftpClient.disconnect();}}// 设置字符编码ftpClient.setControlEncoding("UTF-8");//基本路径,一定存在String basePath="/";String[] pathArray = targetPath.split("/");for(String path:pathArray){basePath+=path+"/";//3.指定目录 返回布尔类型 true表示该目录存在boolean dirExsists = ftpClient.changeWorkingDirectory(basePath);//4.如果指定的目录不存在,则创建目录if(!dirExsists){//此方式,每次,只能创建一级目录boolean flag=ftpClient.makeDirectory(basePath);if (flag){System.out.println("创建成功!");}}}//重新指定上传文件的路径ftpClient.changeWorkingDirectory(targetPath);//5.设置上传文件的方式ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//使用uuid,保存文件名唯一性String uuid= UUID.randomUUID().toString();/*** 6.执行上传* remote 上传服务后,文件的名称* local 文件输入流* 上传文件时,如果已经存在同名文件,会被覆盖*/boolean uploadFlag = ftpClient.storeFile(uuid+suffix,inputStream);if(uploadFlag)System.out.println("上传成功!");return uuid+suffix;}
五、获取yml配置的工具类
@Data
@Component
public class UploadUtil {@Value("${upload.hostname}")private String hostname;@Value("${upload.username}")private String username;@Value("${upload.password}")private String password;@Value("${upload.targetPath}")private String targetPath;
}
springboot以FTP方式上传文件到远程服务器相关推荐
- Ftp实现上传文件至远程服务器
服务器安装FTP服务 1.安装vsftpd yum -y install vsftpd 2.关闭匿名访问 vim /etc/vsftpd/vsftpd.conf 将anonymous_enable的值 ...
- java上传文件到远程服务器(一)---HttpURLConnection方式
我们在之前的文章 JavaWeb静态资源分离思路 中已经了解到要把文件上传到静态资源服务器有三种方式: java上传文件到ftp服务器(这个方案需要在静态资源服务器安装ftp服务) java使用Htt ...
- 文件怎么上传远程服务器,怎么上传文件到远程服务器
怎么上传文件到远程服务器 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云服 ...
- 向服务器上传文件的命令,上传文件到远程服务器的命令
上传文件到远程服务器的命令 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...
- Git上传本地文件到服务器,git上传文件到远程服务器
git上传文件到远程服务器 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...
- 上传文件到服务器指令,上传文件到远程服务器的命令
上传文件到远程服务器的命令 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...
- Mac上传文件到远程服务器
Mac上传文件到远程服务器,可以利用mac自带的终端来进行上传,使用sftp方式 终端shell菜单-> 新建远程连接 sftp方式,输入远程服务器ip 3. 然后连接,连的时候会让输入密码,输 ...
- (三)使用xftp上传文件到远程服务器
一.下载与安装 百度云下载链接 xftp 6永久免费版下载 链接:https://pan.baidu.com/s/14sPdEcEP6rdhhr09jcEZcw 提取码:mwee 如果上述链接失效,可 ...
- java 实现上传文件到远程服务器
阿里云低价服务器1折特惠,优惠爽翻天,点我立即低价购买 import java.io.DataOutputStream; import java.io.File; import java.io.Fil ...
最新文章
- UVA 10041 Vito's Family
- DELL IDRAC9配置RAID
- VUE el-input正则验证
- Python学习笔记:虚拟环境和包
- 2009最后一天,为了期盼而祝福
- python之递归函数和内建函数
- 3.过滤数据 ---SQL
- pcb板材的tg是什么_做到这6点,PCB过回焊炉不会出现板弯及板翘!
- pmp知识点详解-项目大牛整理_PMP核心知识点—第四章:项目整合管理(一)
- FTP协议、电子邮件系统、Telnet远程控制
- intellij mysql jdbc_intellij idea java项目中通过JDBC链接mysql
- 链表中倒数第 k 个节点
- POJ NOI0105-36 计算多项式的值
- android贪吃蛇设计报告,基于android的贪吃蛇游戏设计与开发
- 计算机控制系统——数字控制器设计之模拟控制器的离散化(Chapter 5)
- 【服务器】本地运行成功,但服务器上运行却显示错误500
- python_循环语句for_1.12
- 按键精灵读取github page 网页,实现脚本远程控制功能
- 产品vs程序员:你知道www是怎么来的吗?
- 学历证书有用吗?到了社会才知道
热门文章
- C#访问网页、保存网页
- $().each和$.each()
- 小米再次回购股票:斥资近1亿港元 传递市场信心
- 计算机主机如何睡眠,电脑如何设置睡眠
- linux usleep占用cpu,c-Cent OS 6.3上的usleep的CPU高使用率
- linux查看进程线程的方法
- 沙特阿拉伯重新开放对于持有美国、英国和申根签证旅行者落地签
- 做一个九宫格诗词答题小程序 (二)倒计时功能实现
- Icon是什么,在线实现图片转Icon的方法
- Vue ElementUI el-tree 修改节点收缩 icon