前言
的确现在是异步的天下了,今天的这种技术貌似也没什么市场了,全当一个兴趣吧,谁让我是一个复古的人呢(好吧 其实是为了应付催更(滑稽)),不过"古人"的智慧值得我们学习一下的
Maven依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
SpringMVC容器配置
<!-- 文件上传解析器CommonsMultipartResolver -->
<!-- id必须是multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 最大上传大小为1MB = 1024*1024-->
<property name="maxUploadSize" value="1048576" />
</bean>
<!--定制静态资源的访问-->
<mvc:resources location="file:d:/upload/et2009/"
mapping="/pic/**" />
前台
就一个form表单
代码
<form th:action="@{/upload}" method="post"
enctype="multipart/form-data">
文件:<input type="file" name="file">
<input type="submit" value="上传">
</form>
效果
后端
@Controller
@Slf4j
public class UploadController {
@PostMapping("/upload")
public String upload(MultipartFile file) throws IllegalStateException, IOException {
// 获取文件名称
String originalFilename = file.getOriginalFilename();
String extension = FilenameUtils.getExtension(originalFilename);
// 创建新文件名称
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String filename = uuid + "." + extension;
//日志
log.info("filename - {}", filename);
// 创建上传目录
File dir = new File("d:/upload/et2009");
if (!dir.exists()) {
dir.mkdirs();
}
// 上传文件
File destFile = new File(dir, filename);
file.transferTo(destFile);
// 重定向到首页对应的请求 刷新一下
return "redirect:/";
}
}
整体效果
运动轨迹
总结
这里没有Request Response什么事,用到是MutipartFile这个解析文件的jar包,thymLeaf模板引擎,再就是一点SpringMVC容器自己的静态资源定制的技术