首页 > 编程语言 >java 实现文件夹上传(springBoot 框架)

java 实现文件夹上传(springBoot 框架)

时间:2023-11-23 15:35:41浏览次数:35  
标签:files uploadSoundCode java springBoot 表单 uploadSoundCodeFolder 文件夹 上传

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

一、前端如何设置上传组件并将资源上传到后台服务
这里的项目框架为若依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 "";
}

 

参考文章:http://blog.ncmem.com/wordpress/2023/11/23/java-%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e5%a4%b9%e4%b8%8a%e4%bc%a0%ef%bc%88springboot-%e6%a1%86%e6%9e%b6%ef%bc%89/

欢迎入群一起讨论

 

 

标签:files,uploadSoundCode,java,springBoot,表单,uploadSoundCodeFolder,文件夹,上传
From: https://www.cnblogs.com/songsu/p/17851649.html

相关文章

  • SWITCH/Java switch case 语句
    SWITCHcaseswitch语句中的变量类型可以是:byte、short、int或者char。从JavaSE7开始,switch支持字符串String类型了,同时case标签必须为字符串常量或字面量。当变量的值与case语句的值相等时,那么case语句之后的语句开始执行,直到break语句出现才会跳出swit......
  • 使用jasypt对springboot配置信息加密
    1.pom文件增加依赖<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.5</version> </dependency>2.修改启动......
  • 秦疆的Java课程笔记:36 流程控制 if选择结构
    if单选择结构很多时候需要去判断一个东西是否可行,然后才去执行这丫那个一个过程在程序中用if语句来表示。语法:if(布尔表达式){ //如果布尔表达式为true将执行语句}importjava.util.Scanner;publicclassIfDemo1{publicstaticvoidmain(String[]args){......
  • Java读取文件-BufferedReader/FileReader/InputStreamReader/FileInputStream的关系和
    本文根据文章:https://blog.csdn.net/wjp0000/article/details/117771752进行修改一、Java读取和存储文件数据流Java读取文件,实际是将文件中的字节流转换成字符流输出到屏幕的过程这里面涉及到两个类:InputStreamReader和OutputStreamWriterInputStreamReader:将字节流转换成字......
  • 手把手教你玩转 SpringBoot 日志
    本文根据文章:https://lebron.blog.csdn.net/article/details/132953586?spm=1001.2014.3001.5502进行修改一、日志重要吗程序中的日志重要吗?在回答这个问题前,笔者先说个事例:笔者印象尤深的就是去年某个同事,收到了客户反馈的紧急bug。尽管申请到了日志文件,但因为很多关键步骤......
  • java把数据批量插入iotdb
    packagecom.xlkh.kafka;importcn.hutool.core.collection.CollectionUtil;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONArray;importcom.google.common.collect.Lists;importcom.google.common.collect.Sets;importlombok.SneakyThrows;i......
  • Java8函数式接口, 方法引用, 构造器引用, 数组引用
    函数式(Functional)接口只包含一个抽象方法的接口,称为函数式接口。你可以通过Lambda表达式来创建该接口的对象。(若Lambda表达式抛出一个受检异常(即:非运行时异常),那么该异常需要在目标接口的抽象方法上进行声明我们可以在一个接口上使用@Functionallnterface注解,这样做可以检查......
  • 秦疆的Java课程笔记:35 流程控制 顺序结构
    Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。顺序结构是最简单的算法结构。publicclassShunXuDemo{publicstaticvoidmain(String[]args){System.out.println("hello1");System.out.println("hello2");......
  • 基于java+springboot的酒店预定网站、酒店客房管理系统
    该系统是基于Java的酒店客房预订系统设计与实现。是给师弟开发的毕业设计。现将源代码开放出来,感兴趣的同学可以下载。演示地址前台地址:http://hotel.gitapp.cn后台地址:http://hotel.gitapp.cn/admin后台管理帐号:用户名:admin123密码:admin123功能介绍平台采用B/S结构,后端采用主......
  • Java商城网站系统设计与实现(带源码)
    基于Java的商城网站系统设计与实现功能介绍平台采用B/S结构,后端采用主流的Springboot框架进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。前台功能包括:首页、商品详情页、订单、用户中心模块。后台功能包括:总览、订单管理、商品管理、分类管理、标签管理......