一、需求在项目开发中,遇到需要将页面上的文件上传至本地保存,之后这个上传的文件还能进行访问,后台是Spring Boot框架搭建的,只需将文件上传至Spring Boot项目编译之后的类静态文件夹中即可。如下图:
二、文件上传
1、 定义文件上传接口方法
//在pom.xml引入弹簧靴起动器腹板依赖,即可导包
导入组织。弹簧框架。网络。多部分的。多部分文件;
//文件根:上传文件保存的根路径
字符串上传(多部分文件,字符串文件根)引发IOException2、文件上传接口方法实现
@覆盖
公共字符串上载(多部分文件文件,字符串文件根)引发了IOException {
prepareFilePath(文件根);
//获取上传文件的原文件名
字符串fileName=文件。getoriginalfilename();
//规则化之后的文件上传根路径
string normalizefilerot=getnormalizefilerot(文件根);
//根据路径和文件名创建目标文件
文件目标文件=新文件(规格化文件根,文件名);
//如果目标文件存在,删除
if (targetFile.exists())
目标文件。delete();
//将目标文件进行转移
文件。传输到(TargetFile);
返回String.format('%s\%s ',normalizeFileRoot,fileName);
}
/**
文件根:上传文件保存的根路径
此方法是准备文件上传的路径,如果路径不存在,即创建
*/
私有void prepareFilePath(字符串文件根){ 0
文件文件=新文件(帮手。normalizepath(文件根目录));
if(!file.exists())
文件。mkdirs();
}
/**
该方法主要对文件路径进行规则化,如:d : 360 browser ///360 chrome //,
像这种路径就不正确,此方法可以将路径规则化为:D: 浏览器 360浏览器
*/
私有字符串getNormalizeFileRoot(字符串文件根){ 0
返回帮手。normalizepath(文件根目录);
}助手工具类中的路径规则化方法
公共静态字符串规范化路径(字符串路径){ 0
字符串结果=path.replaceAll('/',matcher。quoterereplacement(文件。分隔符));
返回result.replaceAll('\\ ',matcher。quoterereplacement(文件。分隔符));
}3、控制器
@ post mapping("/upload ")
公共请求结果上载(@RequestParam('文件')多部分文件)引发IOException {
配置配置=configservice。获取('上传','文件根目录');
字符串文件路径=BusServiCe。上传(文件,配置。GetVaLue());
返回RequestResult.success(文件路径);
}三、测试
1、 使用邮递员进行文件上传测试
2、 在浏览器中输入http://localhost :8080/上传/定位文件。医生,可以将文件下载到本地
路漫漫其修远兮,吾将上下而求索
译文:在追寻真理方面,前方的道路还很漫长,但我将百折不挠,不遗余力地去追求和探索。
如果您有什么好的想法与方法,欢迎评论区留言,我们一起讨论~