springboot上传并显示图片
1.引入依赖
pom.xml
<!--文件上传 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
2.配置webMvcConfiguration
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 MyWebConfig implements WebMvcConfigurer {
/**
*静态资源处理
**/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("file:D:/photo/");
}
}
3.controller层
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Controller
public class PhotoController {
private String filePath = "D:/photo/";
@RequestMapping("/")
public String index(){
return "photoDemo";
}
@RequestMapping("/upload")
public String upload(@RequestParam("photo") MultipartFile photo, Model model, ServletRequest request) throws IOException {
Map<String, String> map = new HashMap<String, String>();
String fileName = photo.getOriginalFilename();//得到文件名
System.out.println(fileName);
if (fileName != null && fileName.length() > 0) {
// 取得扩展名
String fileExtName = fileName.substring(
fileName.lastIndexOf(".") + 1).toLowerCase();
// 只上传图片 //判断图片上传的格式是否符合 后缀名是否有效
if (fileExtName.equalsIgnoreCase("jpeg")
|| fileExtName.equalsIgnoreCase("png") ||
fileExtName.equalsIgnoreCase("jpg")
|| fileExtName.equalsIgnoreCase("gif")
|| fileExtName.equalsIgnoreCase("ico")
) {
String newFileName = new Date().getTime() + fileName;//不改图片名字
File descFile=new File(filePath, newFileName);
FileUtils.writeByteArrayToFile(descFile, photo.getBytes());
model.addAttribute("path", newFileName);
System.out.println(newFileName);
} else {// 说明上传的不是图片
map.put("message1", "不是图片");
}
} else {
map.put("message2", "上传失败!!!");
}
return "photoDemo";
}
}
4.前端页面
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="photo" required/>
<input type="submit" value="提交">
</form>
<!--使用的是thymeleaf xmlns:th="http://www.thymeleaf.org" -->
<img th:src="${path}" th:width="100px" th:high="100px"/>
<!--<img src="${path}" th:width="100px" th:high="100px"/>-->