页面
当前头像:
选择照片
function defaultImg(img){
img.src="/images/user-lg.png";
}
controller层
@RequestMapping("/saveImg")//its maximum permitted size of 1048576 bytes.
public String saveUserImg(MultipartFile file,Member member) {
Map result = new HashMap();
try {
// 获取客户端传图图片的输入流
InputStream ins = file.getInputStream();
byte[] buffer=new byte[2048];//bit---byte---1k---1m
int len=0;
// 字节输出流
ByteArrayOutputStream bos=new ByteArrayOutputStream();
while((len=ins.read(buffer))!=-1){
bos.write(buffer,0,len);
}
bos.flush();
byte img[] = bos.toByteArray();
member.setHeadImg(img);
System.out.println("图片==="+member.getHeadImg());
int i=memberService.saveImg(member);//修改数据库
result.put("code",i);
result.put("msg", "保存头像成功");
} catch (Exception e) {
result.put("code",0);
result.put("msg", "保存头像失败");
return "uploaderror";
}
return "e-commerce_account";
}
@RequestMapping(value = "/headImg", produces = MediaType.IMAGE_PNG_VALUE)
public ResponseEntity headImg(String id) throws Exception{
byte[] imageContent ;
// 根据id获取当前用户的信息
Member member = memberService.selectMemberById(id);
imageContent = member.getHeadImg();
System.out.println("图片==="+member.getHeadImg());//member.getCzyxm()
// 设置http头部信息
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_PNG);
// 返回响应实体
return new ResponseEntity(imageContent, headers, HttpStatus.OK);
}
Service层
@Override
public int saveImg(Member member) throws Exception {
int i = memberMapper.saveUserImg(member);
if(i!=1) {
throw new Exception("更新用户头像失败");
}
return i;
}
Mapper层
update member set HEAD_IMG = #{headImg} where id = #{id}
另外 上传图片不能过大
修改 Spring Boot工程嵌入的tomcat限制了请求的文件大小(未亲测)
需要设置以下两个参数
multipart.maxFileSize
multipart.maxRequestSize
Spring Boot 1.3.x或者之前
multipart.maxFileSize=100Mb
multipart.maxRequestSize=1000Mb
Spring Boot 1.4.x
spring.http.multipart.maxFileSize=100Mb
spring.http.multipart.maxRequestSize=1000Mb
很多人设置了multipart.maxFileSize但是不起作用,是因为1.4版本以上的配置改了,详见官方文档:spring boot 1.4
Spring Boot 2.0之后
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=1000MB