前提:前面的前端页面需要写成input type=“file”,method=“post”,enctype="multipart/form-data"
springBoot中用 @RequestParam(“file”) MultipartFile file进行获取前端的值
- 然后看看servlet页面的操作
@RequestMapping("add")
public String addStudent(@RequestParam("sname") String sname,
@RequestParam("birthday") String birthday,@RequestParam("address") String address,
@RequestParam("file") MultipartFile file,
HttpServletRequest request,
HttpServletResponse response){
String sname1 = request.getParameter("sname");
String birthday1 = request.getParameter("birthday");
//把字符串的date转换成为java.sql.date
Date date = Date.valueOf(birthday1);
String address1 = request.getParameter("address");
String filename = fileUpload(request, response, file);
Student student=new Student(sname1,date,address1,filename);
studentService.addStudent(student);
return "redirect:liststu";
}
private String fileUpload(HttpServletRequest request, HttpServletResponse response,
MultipartFile file1) {
if(file1.isEmpty()){
System.out.println("文件为空");
}
String fileName = file1.getOriginalFilename();//文件名
System.out.println(fileName);
// 可以知道fileName.lastIndexOf返回的是一个数值,从后面进行配置,配置的索引从前面进行取值为5
int i = fileName.lastIndexOf(".");
System.out.println(i);
String suffixName = fileName.substring(fileName.lastIndexOf("."));//后缀名
System.out.println(suffixName);
String filePath="E:/img/";//上传后的路径
// 通过UUID生成新的文件名
fileName= UUID.randomUUID()+suffixName;
File dest=new File(filePath+fileName);
if(!dest.getParentFile().exists()){
dest.getParentFile().mkdirs();
}
try {
file1.transferTo(dest);
} catch (IOException e) {
e.printStackTrace();
}
String filename="/img/"+ fileName;
System.out.println(filename);
return filename;
}
- 创建config包,创建MyWebAppConfigurer 类:
package com.zjj.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 资源映射路径
*/
@Configuration
public class MyWebAppConfigurer implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/img/**").addResourceLocations("file:E:/img/");
}
}
3.可以用thymleaf进行取值显示
<!-- th:src="${stu.photo}
和 th:src="${stu.getPhoto()}"都可以
"-->
<img th:src="${page.photo}" alt="" width="100" height="100">
</td>