java零基础入门006~springboot实现多文件的上传(java多文件的上传)
时间:2022-07-28
本文章向大家介绍java零基础入门006~springboot实现多文件的上传(java多文件的上传),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本节内容是建立在上一节内容的基础上,如果没有看上节内容,请查看上一节内容《springboot实现单个文件上传(图片 文档 视频 音频都可以上传)》
准备工作
- 开发工具:IntelliJ idea(需要破解,前面章节有讲)
- 创建一个springboot项目(前面章节有讲)
- 创建一个用来上传文件的html文件
- 创建一个用来接收文件的controller
一,创建uploads.html用来选择多个文件
先来看下上一节的upload.html单文件上传的页面
image
再来看下本节的uploads.html多文件上传的页面
image
对比下可以看到,多文件上传只需要多一个 multiple="multiple" 属性就可以了
下面贴出来uploads.html 完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传多个文件到服务器</title>
</head>
<body>
<form action="/uploads" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFiles" value="请选择文件" multiple="multiple" >
<input type="submit" value="上传">
</form>
</body>
</html>
二,定义接收多文件的controller文件
image
可以看出,我们就在上一节单文件上传的UploadController里添加了一个多文件上传的uploads方法
完整代码给大家贴出来
/**
* Created by qcl on 2019-06-11
* 老师微信:2501902696
* desc: 文件上传
*/
@RestController
public class UploadController {
//单个文件的上传
@PostMapping("/upload")
public String upload(MultipartFile uploadFile, HttpServletRequest request) {
/*
定义文件的存储路径,如下,是在linux和mac上定义的文件路径
/private/var/folders/8x/4zvnbqmj1w33cqmzrpygzbth0000gn/T/tomcat-docbase.5206733816001100271.8080/uploadFile
*/
String realPath = request.getSession().getServletContext().getRealPath("/uploadFile/");
File dir = new File(realPath);
if (!dir.isDirectory()) {//文件目录不存在,就创建一个
dir.mkdirs();
}
try {
String filename = uploadFile.getOriginalFilename();
//服务端保存的文件对象
File fileServer = new File(dir, filename);
System.out.println("file文件真实路径:" + fileServer.getAbsolutePath());
//2,实现上传
uploadFile.transferTo(fileServer);
String filePath = request.getScheme() + "://" +
request.getServerName() + ":"
+ request.getServerPort()
+ "/uploadFile/" + filename;
//3,返回可供访问的网络路径
return filePath;
} catch (IOException e) {
e.printStackTrace();
}
return "上传失败";
}
//多个文件的上传
@PostMapping("/uploads")
public String uploads(MultipartFile[] uploadFiles, HttpServletRequest request) {
//1,对文件数组做判空操作
if (uploadFiles == null || uploadFiles.length < 1) {
return "文件不能为空";
}
//2,定义文件的存储路径,
String realPath = request.getSession().getServletContext().getRealPath("/uploadFile/");
File dir = new File(realPath);
if (!dir.isDirectory()) {//文件目录不存在,就创建一个
dir.mkdirs();
}
try {
String filePathS = "";
//3,遍历文件数组,一个个上传
for (int i = 0; i < uploadFiles.length; i++) {
MultipartFile uploadFile = uploadFiles[i];
String filename = uploadFile.getOriginalFilename();
//服务端保存的文件对象
File fileServer = new File(dir, filename);
System.out.println("file文件真实路径:" + fileServer.getAbsolutePath());
//2,实现上传
uploadFile.transferTo(fileServer);
String filePath = request.getScheme() + "://" +
request.getServerName() + ":"
+ request.getServerPort()
+ "/uploadFile/" + filename;
filePathS = filePathS + "n" + filePath;
}
//4,返回可供访问的网络路径
return filePathS;
} catch (IOException e) {
e.printStackTrace();
}
return "上传失败";
}
}
到这里我们多文件上传的代码就全部实现了。
三,启动项目(三种方式~推荐第一种)
1,点击绿色箭头(最简便,提倡)
image
2,点击main方法前的绿色箭头
image
3,命令行输入 mvn spring-boot:run
image
四,验证
1,输入下图的链接,进入文件选择页
image
2,选择多个文件,我们这里选择3个图片,一个视频
image
image
3,点击上传,然后上传成功如下图
image
4,查看图片,可以通过上图的链接查看已经传到后台的图片
image
5,查看视频(这样就可以在线查看已经上传到服务器的视频了)
image
到这里,我们多个文件的上传也成功的实现了。
源码地址:https://github.com/qiushi123/springboot-demos
- 微信小程序与新零售相结合引流又出新方法啦!
- JAVA CDI 学习(2) - Scope 生命周期
- JAVA CDI 学习(3) - @Produces及@Disposes
- 3分钟带你学会git向github推送!
- JAVA CDI 学习(4) - @Alternative/@Default/@Any & Extension
- centos6.6 下安装mysql
- silverlight 4 tools for vs2010无法在vs2010 SP1上安装的解决办法
- find命令小结
- Python加圣诞帽
- 多次grep 没有看到输出
- java多线程 基础demo
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
- mybatis 使用tips - 使用多个参数
- 从高的角度看自动化测试
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PyTorch中model.zero_grad()和optimizer.zero_grad()用法
- 利用PyTorch实现VGG16教程
- PHP添加文字水印或图片水印的水印类完整源代码与使用示例
- Python 分布式缓存之Reids数据类型操作详解
- Pycharm打开已有项目配置python环境的方法
- python cv2.resize函数high和width注意事项说明
- pytorch SENet实现案例
- python如何安装下载后的模块
- Python爬虫如何应对Cloudflare邮箱加密
- 如何使用Python处理HDF格式数据及可视化问题
- tp5框架使用composer实现日志记录功能示例
- python 图像插值 最近邻、双线性、双三次实例
- tp5(thinkPHP5)框架实现多数据库查询的方法
- Python-openCV开运算实例
- php curl获取https页面内容,不直接输出返回结果的设置方法