首页 > 编程语言 >java实现文件夹上传功能实例代码(SpringBoot框架)

java实现文件夹上传功能实例代码(SpringBoot框架)

时间:2023-10-31 11:55:05浏览次数:40  
标签:files uploadSoundCode java SpringBoot 表单 文件夹 e4% 上传

前言

有时我们后台管理等服务可能会有这样一个简单需求,就是根据文件夹将整个文件夹下的所有资源都上传到我们的服务器上,本人也是搜索了大量资料,最终以最简单便捷的方式实现该功能,具体操作步骤如下

一、前端如何设置上传组件并将资源上传到后台服务

这里的项目框架为若依VUE版本,下面将核心的代码抽离出来进行代码示例,方便大家快速阅读

1)首先我们需要新建一个用来提交文件夹的form表单

1.添加一个 type=file 的 input 提交组件,添加 webkitdirectory 标识来使用文件夹上传功能

2.添加 @change=“uploadSoundCodeFolder” 事件,当我们上传了文件夹后将触发 uploadSoundCodeFolder() 函数来处理上传逻辑

<form id="uploadSoundCodeFolderForm"
style="display: none" method="post"
enctype="multipart/form-data">
<input id="fileFolder" name="fileFolder" type="file"
@change="uploadSoundCodeFolder" webkitdirectory>
</form>

 

uploadSoundCodeFolder() 实现逻辑如下

uploadSoundCodeFolder(e){
this.uploadSoundCodeLoading = true;
//获取到选中的文件夹内的所有文件
//files 为一个集合
//可通过遍历 files 的方式获取到每个文件的大小等数据,来实现大小限制等需求
let files = e.target.files;

//中间省略大小限制等需求......

//获取表单数据
let formData = new FormData(document.getElementById("uploadSoundCodeFolderForm"));

//调用后台服务方法来提交该表单数据
uploadSoundCode(formData).then((res)=>{
_this.$message.success("上传成功")
//上传成功后清空表单数据
$("#fileFolder").val('');
})
}

2)然后我们添加自己框架内的一些按钮来触发该隐藏的表单

这样做的好处是使用了form文件夹上传的功能,却不用使用他的UI

<!-- 首先创建一个按钮用来触发上传事件 uploadSoundCodeBtn() -->
<el-button v-loading="uploadSoundCodeLoading"
@click="uploadSoundCodeBtn">
上传文件夹
</el-button>

/*上传事件触发的方法*/
uploadSoundCodeBtn(){
$("#fileFolder").click();
},

二、后台如何接收处理文件夹表单数据

这里我们使用 List fileFolde 类型来接受前端发来的文件集合,fileFolde为表单里面的 name

@RequestMapping(value="/uploadSoundCode",method= RequestMethod.POST)
public AjaxResult uploadSoundCode(List<MultipartFile> fileFolde) throws IOException {
String soundCodeUrl = HereUtil.uploadSoundCode(fileFolder);
return AjaxResult.success(soundCodeUrl);
}

然后根据业务将文件保存到服务器就行了

public static String uploadSoundCode(List<MultipartFile> files) throws IOException {

for (MultipartFile file : files) {
String fileName = file.getOriginalFilename();
if (StrUtil.isBlank(fileName)){
continue;
}

//上传后的URL全路径
String fullFilePath = "上传的跟路径" + fileName;
FileUtil.writeFromStream(file.getInputStream(), fullFilePath);
}

return "";
}

总结

到此这篇关于java实现文件夹上传功能的文章就介绍到这了

 

参考文章:http://blog.ncmem.com/wordpress/2023/10/31/java%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e5%a4%b9%e4%b8%8a%e4%bc%a0%e5%8a%9f%e8%83%bd%e5%ae%9e%e4%be%8b%e4%bb%a3%e7%a0%81springboot%e6%a1%86%e6%9e%b6/

欢迎入群一起讨论

 

 

标签:files,uploadSoundCode,java,SpringBoot,表单,文件夹,e4%,上传
From: https://www.cnblogs.com/songsu/p/17799935.html

相关文章

  • SpringBoot中,为什么不直接使用一个Service写功能,而是Service接口+ServiceImpl实现类?
    当项目比较简单的时候,需求明确,变更不频繁或者几乎不怎么修改的时候,用第一种就好了当项目比较复杂,需求变更多的时候,用第二种比较好service层=service接口+serviceImpl实现类这种方式好处:1、解耦合2、便于扩展例如:publicinterfaceHumanService{StringgetName();}@Serv......
  • java8 集合操作功能
    Java8引入了许多新的集合操作功能,包括但不限于以下几项:forEach:使用Lambda表达式遍历集合中的每个元素。stream:将集合转换为流,以便进行各种操作,如过滤、映射、排序等。filter:根据指定的条件过滤集合中的元素,并返回过滤后的结果。map:将集合中的每个元素映射为另一个元素,并返回......
  • Gradle8.4构建SpringBoot多模块项目
    Gradle8.4构建SpringBoot多模块项目一、基本1、版本这个版本是Jdk8最后一个SpringBoot版本软件版本Gradle8.4SpringBoot2.7.15JDK82、Gradle基本介绍2.1、使用Wrapper方式构建好处:统一gradle的版本好处:不用安装gradle就可以使用Maven也是一样的......
  • 【面试题】详解JavaScript中的Map()
    JavaScript中的Map()JavaScript是一种动态、解释性的编程语言,用于开发web上的动态页面和交互式应用程序。与其他编程语言相比,JavaScript拥有更加灵活的内置数据类型,并且拥有更高级别的调试和错误处理工具。JavaScript的核心特征之一就是其内置的Map()数据结构,本文将详细介绍JavaScr......
  • 超市账单管理系统 JAVA开源项目 毕业设计
    一、摘要基于JAVA+Vue+SpringBoot+MySQL的超市账单管理系统,包含供应商模块、商品管理模块、超市账单模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,超市账单管理系统基于角色的访问控制,给超市管理员、店长使......
  • 一文详解 springboot 项目启动时异步执行初始化逻辑
    你知道的越多,你不知道的越多点赞再看,养成习惯文章目录前言代码实现定义异步处理工具类实现java线程池新建AppInit实现ApplicationRunner接口完成启动项目时异步数据初始化前言前面的工作中,为了提高地区数据的响应时间,需要加载全国区划数据到redis中缓存起来,这个过程希......
  • 医院门诊预约挂号系统 JAVA开源项目 毕业设计
    一、摘要基于JAVA+Vue+SpringBoot+MySQL的医院门诊预约挂号系统,包含了科室管理模块、医生管理模块、预约挂号模块、医院新闻模块和留言板模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,医院门诊预约挂号系......
  • 校园电商物流云平台 JAVA开源项目 毕业设计
    一、摘要基于JAVA+Vue+SpringBoot+MySQL的校园电商物流云平台,包含了商品管理模块、快递公司模块、物流订单模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,校园电商物流云平台基于角色的访问控制,给商家、物流......
  • 考研专业课程管理系统 JAVA开源项目 毕业设计
    一、摘要基于JAVA+Vue+SpringBoot+MySQL的考研专业课程管理系统,包含了考研课程、考研专业、考研注册、考研院校和高校教师模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,考研专业课程管理系统基于角色的访问......
  • java通过ssl连接mysql(linux)
    环境:Os:centos7mysql:5.7.29java运行客户端:windows10 1.查看服务器的证书文件mysql数据data目录下[root@localhostdata]#pwd/opt/mysql57/data[root@localhostdata]#ls-al*.pem-rw-------.1mysqlmysql1676Oct3005:22ca-key.pem-rw-r--r--.1mysqlmysq......