今日份主题

Spring Boot文件上传(Form表单和Ajax方式)

在Spring Boot中,和文件上传的主要和MultipartResolver接口有关,他有两个实现类

StandardServletMultipartResolver和CommonsMutipartResolver。这两个类都可以实现文件文件的上传功能。

其中CommonsMutipartResolver是使用Commons-fileupload来实现multipart请求的。而StandardServletMultipartResolver是使用Servlet3.0来实现的。由于在Spring boot中的tomcat的版本都是7.0以上的版本。已经内置了Servlet3.0。所以我们可以直接实现StandardServletMultipartResolver,而不需要添加任何依赖即可。这也是我推荐大家的方式。

下面通过一个案例来说明文件的上传如何实现

A)form表单文件上传

案例:实现单文件的上传功能。
实现步骤:

01创建工程,工程名为chapter03-upload,添加web依赖即可。

过程省略。

02创建包controller,并创建类FileUploadController。

@Controller
public class FileUploadController {
private SimpleDateFormat sdf=new SimpleDateFormat("/yyyy/MM/dd/");

@PostMapping("/upload")

@ResponseBody

public String upload(MultipartFile uploadFile, HttpServletRequest request){

//1、查看是否存在上传文件夹,如果不存在就创建

String realPath=request.getServletContext().getRealPath("/upload");

String format=sdf.format(new Date());

File folder=new File(realPath+format);

if(!folder.exists()){

folder.mkdirs();

}

String oldName=uploadFile.getOriginalFilename();

String newName= UUID.randomUUID().toString()+oldName.substring(oldName.lastIndexOf("."),oldName.length());

try {

uploadFile.transferTo(new File(folder,newName));

String filePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/upload"+format+newName;

return filePath;

} catch (IOException e) {

e.printStackTrace();

}

return "error";

}

}

-----------------------------------------------------------------------------------------------

03.在resources下面的static文件下创建index.html文件,编写上传的表单。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>文件上传</title>

</head>

<body>

<form action="/upload" method="post" enctype="multipart/form-data">

请选择上传文件:<input type="file" name="uploadFile" id="uploadFile">

<input type="submit" name="btnUpload" value="上传">

</form>

</body>

</html>

-----------------------------------------------------------------------------------------------

如果需要对上传的过程做精确的控制,可以参考第4步。

04根据需要在application.properties中做相关的配置。

这一步不是必须的,这点编写注意。

#每次上传单个文件的默认的大小是1M,注意M要大写

spring.servlet.multipart.max-file-size=1M

#上传的文件的总的大小是10M

spring.servlet.multipart.max-request-size=10M

#每次上传文件的临界值,每次上传的时候不可能把文件全部写到内存,达到多少不写内存写硬盘

spring.servlet.multipart.file-size-threshold=0B

#当文件先临时写硬盘,写文件的位置

spring.servlet.multipart.location=E:/

#是否启动MultipartResolver进行文件上传

spring.servlet.multipart.enabled=true

-----------------------------------------------------------------------------------------------

很多时候需要进行前后端的分离开发,此时文件上传一般都是Ajax进行文件的上传操作。

B)Ajax文件上传案例演示

实现步骤:
构造工程我们不再进行构建,直接用上面的工程即可。后端我们写不需要修改,我们只需要在static文件夹中重新新建一个文件upload.html,添加JQuery文件,采用Ajax即可。

01在static中添加JQuery。

02在static中添加upload.html。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Title</title>

<script src="jquery-1.12.4.js"></script>

</head>

<body>

<div id="result"></div>

<input type="file" name="file" id="file">

<input type="button" name="btnUpload" value="上传" οnclick="uploadFile()">

</body>

<script type="application/javascript">

function uploadFile() {

//首先获得JQuery对象,然后通过[0]转成Js对象。files是所有上传文件,这里是单文件上传,因此[0]获得第1个上传文件即可

var file=$("#file")[0].files[0];

//创建上传表单

var formData=new FormData();

//将数据添加到上传表单,注意key的值和后台MultipartFile的文件名相同,特别提醒注意。

formData.append("uploadFile",file);

$.ajax({

type:"post",

url:"/upload",

processData:false,//上传的数据是否需要处理成对象,这里不用

contentType:false,//避免JQuery设置请求头,它可能会破会分隔符,分隔符是用来确认上传文件的起始位置的。

data:formData,

success:function (msg) {

$("#result").html(msg);

}

})

}

</script>

</html>

-----------------------------------------------------------------------------------------------

03.测试,即可完成文件上传。

整个工程的结构如下所示:

这里需要说明的是大家必须把js中的注释部分阅读一下。很多同学可能对这种方式不是很熟悉。

vueform表单文件上传_峰哥说技术系列-8.Spring Boot文件上传(Form表单和Ajax方式)相关推荐

  1. springboot整合hibernate_峰哥说技术系列-17 .Spring Boot 整合 Spring Data JPA

    今日份主题 Spring Boot 整合 Spring Data JPA JPA(Java Persistence API)是用于对象持久化的 API,是Java EE 5.0 平台标准的 ORM 规 ...

  2. Spring Boot文件上传及回显(单/多文件)

    一.单文件上传 1.前端页面 <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

  3. 全栈开发实战|Spring Boot文件上传与下载

    文件上传与下载是Web应用开发中常用的功能之一.接下来我们将讨论如何在Spring Boot的Web应用开发中,如何实现文件的上传与下载. 01.Spring Boot文件上传与下载 在实际的Web应 ...

  4. spring boot配置对上传文件的大小限制

    spring boot配置对上传文件的大小限制 spring-boot 2.0之前 Spring Boot1.4版本后配置更改为(默认单个文件最大1Mb,单次请求文件总数大小最大10Mb): spri ...

  5. Spring Boot:上传文件大小超限制如何捕获 MaxUploadSizeExceededException 异常

    Spring Boot 默认上传文件大小限制是 1MB,默认单次请求大小是 10MB,超出大小会跑出 MaxUploadSizeExceededException 异常. 问题来了,当文件超过 1M ...

  6. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  7. Spring Boot 批量上传: The field files exceeds its maximum permitted size of 1048576 bytes.

    Spring Boot 批量上传异常: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededExcep ...

  8. Spring boot项目上传Linux服务器后 上传图片后,图片路径报404,图片路径映射问题

    问题 spring boot项目上传到Linux服务器后,头像上传后报404.但是我的打包的jar包在idea客户端运行是没问题的 解决 错误代码 @Overridepublic void addRe ...

  9. 理论 | 当 Spring Boot 遇上了消息队列......

    这是小小本周的第五篇,当Spring Boot 遇上了消息队列. Spring Boot 1.0 版本 在很远很远的以前,作为单体应用,只有一个Spring Boot 应用,当两个Spring Boo ...

最新文章

  1. Centos配置终端的快捷键
  2. Java EE(五)
  3. android 官方DrawerLayout的介绍和使用
  4. 黑盒测试——自动饮料售货机
  5. Core Data 迁移
  6. Logistic回归 python实现
  7. 阿里P8架构师谈:JVM的内存分配、运行原理、回收算法机制
  8. 关于 win7 远程桌面的多用户问题
  9. java读取bny_java转义字符
  10. sps 2007 小问题1:人员选择器PeopleEditor如何使用
  11. 驰骋工作流程引擎在流程设计发生变化后如何处理?
  12. 入门必学 | R语言数据集结构的解读指南
  13. Y 组合子详解 (The Y Combinator)
  14. 搞一下整车以太网技术 | 01 汽车以太网PHY详解
  15. java粒子特效_程序员20分钟搞定粒子效果, 仅仅200行代码
  16. 炒币机器人:炒币投资要大气
  17. 图片怎么在线转换成PDF格式
  18. 应对羊毛党的老手段不管用了,但有些公司依然有办法,他们是怎么做的?
  19. python getattr()函数
  20. uniapp 微信小程序 用户登出后取消实时定位上传

热门文章

  1. 每日两SQL(9),欢迎交流~
  2. HOL中的四种排序,Order By、Sort By、Distribute By、Cluster By
  3. Java NIO:Buffer、Channel 和 Selector
  4. leetcode 341. Flatten Nested List Iterator | 341. 扁平化嵌套列表迭代器(Java)
  5. netty系列之:一个价值上亿的网站速度优化方案
  6. java安全编码指南之:锁的双重检测
  7. Solidity的Bytecode和Opcode简介
  8. hdu4004 The Frog's Games 二分
  9. 44行代码AC_卡片换位(DFS变形题 视频讲解 )
  10. (~最新合集~)计算机网络谢希仁第七版 第五章课后答案