笔记70 Spring Boot快速入门(八)(重要)
上传文件
一、方式一
1.上传页面
upLoadPage.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<h1>Thymeleaf</h1>
<form action="upload" method="post" enctype="multipart/form-data">
选择图片:<input type="file" name="file" accept="image/*"/><br/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
<1>. method="post" 是必须的
<2>. enctype="multipart/form-data" 是必须的,表示提交二进制文件
<3>. name="file" 是必须的,和后续服务端对应
<4>. accept="image/*" 表示只选择图片
2.上传文件页面跳转控制器,用来跳转到上传页面。
@RequestMapping("upLoadPage")
public String uploadPage(){
return "upLoadPage";
}
3.上传文件控制器,用来上传文件,并跳转到显示页面。
@RequestMapping(value = "/upload",method = RequestMethod.POST)
public String upload(HttpServletRequest request, @RequestParam("file")MultipartFile file, Model model){ try {
String fileName=System.currentTimeMillis()+file.getOriginalFilename();
String destFileName=request.getServletContext().getRealPath("")+"uploaded"+File.separator+fileName;
File destFile=new File(destFileName);
destFile.getParentFile().mkdirs();
file.transferTo(destFile);
//System.out.println(destFileName);
model.addAttribute("fileName",fileName);
}catch (FileNotFoundException e){
e.printStackTrace();
return "上传失败,"+e.getMessage();
}catch (IOException e){
e.printStackTrace();
return "上传失败,"+e.getMessage();
}
return "showImage";
}
<1>. 接受上传的文件
<2>. 根据时间戳创建新的文件名,这样即便是第二次上传相同名称的文件,也不会把第一次的文件覆盖了
<3>. 通过req.getServletContext().getRealPath("") 获取当前项目的真实路径,然后拼接前面的文件名
<4>. 第一次运行的时候,这个文件所在的目录往往是不存在的,这里需要创建一下目录
<5>. 把浏览器上传的文件复制到希望的位置
<6>. 把文件名放在model里,以便后续显示用
4.显示页面
showImage.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<img th:src="@{/uploaded/{filename}(filename=${fileName})}"/>
</body>
</html>
5.application.properties
#spring.mvc.view.prefix=/WEB-INF/jsp/
#spring.mvc.view.suffix=.jsp
spring.http.multipart.max-file-size=10MB
spring.http.multipart.max-request-size=10MB spring.thymeleaf.enabled=true server.port=5050
设置上传文件的大小,默认是1m,太小了,文件稍微大一点就会出错。修改端口,启用thymeleaf模板
6.测试
文件的存储路径:
二、方式二(将文件保存在项目目录下)
1.在pom.xml增加依赖,使项目支持JSP。
<!-- servlet依赖. -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId> </dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
2.在main目录下,新建-> webapp/WEB-INF/jsp 目录,用来存放视图。webapp存放视图和资源(上传的文件)
3.showImage.jsp、upLoadPage.jsp中的内容直接把html中的复制过来即可。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <img src="/uploaded/${fileName}">
4.application.properties中添加对jsp视图的解析路径,并将thymeleaf模板关闭。
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
4.spring.thymeleaf.enabled=false
5.测试
上传文件所在位置:
代码:https://github.com/lyj8330328/springboot-upload-demo
最新文章
- 001_SPL工作中总结
- spring 框架通过new Object()获取applicationContext 中的bean方案
- db2 中文表名和字段
- Java for LeetCode 154 Find Minimum in Rotated Sorted Array II
- UVA 10254 - The Priest Mathematician (dp | 汉诺塔 | 找规律 | 大数)
- Windows Community Toolkit 4.0 - DataGrid - Overview
- Windows Docker 使用笔记
- python 爬取qidian某一页全部小说
- Vue + Element UI 实现权限管理系统(更换皮肤主题)
- js gettext
- openerp7 时区问题解决--改成本地时区
- Npm安装以及express框架的使用
- 使用jquery操作session
- shred_linux_unix
- 我的";gethup";(GitHub)注册之旅
- Struts2通配符
- zookeeper集群,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的。
- (八)Redis事务与连接操作
- HDU 5249 离线树状数组求第k大+离散化
- 【服务器时间修改为东八区】包括Apache2和mysql
热门文章
- 【串线篇】Mybatis缓存简介
- Codeforces 958C3 - Encryption (hard) 区间dp+抽屉原理
- web项目问题总结
- JPush极光推送Java服务器端实例
- 【CF1100F】Ivan and Burgers(线性基,分治)
- [CSP-S模拟测试]:回文串(hash+二分)
- ElasticSearch 简介概念及核心
- ibatis 的使用
- python接口自动化测试三十四:github上某接口测试平台及配置
- 转-调用HTMLTestRunner生成的报告中不能显示用例中print函数的输出