IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringBoot--->>>web-->>文件上传和下载 -> 正文阅读

[Java知识库]SpringBoot--->>>web-->>文件上传和下载

文件上传和下载

之前在SpringMvc和使用原生态Servlet时都了解过如何操作文件上传和下载,过程都比较多,基本就是写一遍以后都是复制粘贴用。而是用SpringBoot操作文件上传和下载,则会更加简单和方便。

首先创建一个文件上传的表单,需要有一个单文件上传和多文件上传。

表单里面首先声明enctype为multipart/form-data,请求方式为post,设置好接受提交参数的请求,使用了thymeleaf语法就不用写全路径,直接用thymeleaf语法写一个请求地址剩下的会由thymeleaf补全,设置好了后,在表单里面要注意的就是,多个文件上传时,设置input属性multiple,就能实现多个文件上传

<form th:action="@{/fileUp}" method="post" enctype="multipart/form-data">
 ? ?<label>用户名</label>
 ? ?<input type="text" name="username" placeholder="请输入用户名">
 ? ?<label>密码</label>
 ? ?<input type="password" name="password" placeholder="请输入密码">
 ?<input type="file" name="userImg" value="单个文件">
 ?<input type="file" name="files" value="多个文件" multiple>
 ?<input type="submit" name="上传">
</form>

然后在控制器中

建立一个接收POST请求的控制器方法,方法参数名一样就直接用,不一样就用注解@RequestParam,接收文件类型的参数,在SpringBoot中提供了MultipartFile类来接收,十分方便。单个文件就用单个对象接收,多个文件就用数组来接收。

在这个类里面提供了很多操作上传文件的方法,getName方法获取的是上传的文件参数name属性值,getOriginalFilename方法获取的是上传文件的真实名称。除此之外,SpringBoot提供了更加方便的操作文件的方法transferTo,能够直接将文件接收在本地指定地址中,也能通过getInputStream方法直接获取上传的文件流,爱怎么操作这个文件流都能操作

@Controller
public class FileUploadController {
?
 ? ?@RequestMapping("/upload")
 ? ?public String upload() {
 ? ? ? ?return "fileUp";
 ?  }
?
 ? ?@PostMapping("/fileUp")
 ? ?public String fileUp(String username,
 ? ? ? ? ? ? ? ? ? ? ? ? String password,
 ? ? ? ? ? ? ? ? ? ? ? ? MultipartFile userImg,
 ? ? ? ? ? ? ? ? ? ? ? ? MultipartFile[] files) throws IOException {
 ? ? ? ?System.out.println("用户名:" + username);
 ? ? ? ?System.out.println("文件名:" + userImg.getOriginalFilename());
 ? ? ? ?System.out.println("files的长度:" + files.length);
?
 ? ? ? ?userImg.transferTo(new File("D:\\Apache\\image\\" + userImg.getOriginalFilename()));
 ? ? ? ?for (MultipartFile file : files) {
 ? ? ? ? ? ?file.transferTo(new File("D:\\Apache\\image\\" + file.getOriginalFilename()));
 ? ? ?  }
 ? ? ? ?System.out.println("success");
 ? ? ? ?return "redirect:/main";
 ?  }
?
}

可能会出错的问题:

在SpringBoot中,由MultipartAutoConfiguration类管理文件上传。在操作中会出现文件过大报错,就能搜索这个类,在里面看见,有一个MultipartProperties配置类,点进去就能看见

@ConfigurationProperties(prefix = "spring.servlet.multipart", ignoreUnknownFields = false)

说他跟配置文件中的以前缀spring.servlet.multipart开头的配置项绑定,然后里面的属性都是设置默认文件上传大小的,那么就可以通过在application配置文件中设置

以下这两项,规定单次文件上传最大值,和总请求上传文件最大值。

spring:
  servlet:
 ?  multipart:
 ? ?  max-file-size: 10MB
 ? ?  max-request-size: 120MB

?

然后就能看见文件们都被上传到你指定的本地位置了

以上就是文件上传和下载,SpringBoot的很方便。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 12:48:23  更:2022-03-06 12:48:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:52:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码