需求:从系统上传图片,将图片信息保存到数据库的blob字段中,并提供照片的查询接口
controller:
package com.success.controller;
import ..
/**
* 系统图标切换
*/
@RestController
@Slf4j
@RequestMapping("/systemPageLogo")
public class SystemPageLogoController {
@Autowired
private SystemPageLogoService systemPageLogoService;
/**
* 保存登录页logo
* @param file
* @return
*/
@PostMapping("/saveLoginLogo")
public RetResult saveLoginLogo(@RequestParam("file") MultipartFile file){
RetResult<Integer> retResult = new RetResult<>();
try {
int a = systemPageLogoService.saveLoginLogo(file);
retResult.success(a, "保存成功");
} catch (Exception e) {
retResult.failed("操作失败"+e.getMessage());
}
return retResult;
}
/**
* 查询图片,以二进制流的形式返回
* type:
* loginLogo-登录logo
*
*/
@GetMapping("/getPhoto")
public void getPhoto(String type, HttpServletResponse response){
try{
List<SystemPageInfoEntity> list = systemPageLogoService.getPhoto();
response.setContentType("image/jpeg");
byte[] image = null;
if(list.size()>0){
SystemPageInfoEntity po = list.get(0);
if("loginLogo".equals(type)){//登录logo
image = po.getLoginLogo();
}
ServletOutputStream is=response.getOutputStream();
is.write(image);
is.flush();
is.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
service:
package com.success.service;
import..
public interface SystemPageLogoService {
/**
* 保存登录页logo
* @param file
* @return
*/
int saveLoginLogo(MultipartFile file);
/**
* 查询系统图片
* @return
*/
List<SystemPageInfoEntity> getPhoto();
}
package com.success.service.impl;
import ..
@Slf4j
@Service
public class SystemPageLogoServiceImpl implements SystemPageLogoService {
@Autowired
private SystemPageLogoDao systemPageLogoDao;
/**
* 保存或更新登录页logo
* @param file
* @return
*/
@Override
public int saveLoginLogo(MultipartFile file) {
byte[] b=null;
try {
b= file.getBytes();
} catch (Exception e) {
e.printStackTrace();
}
List<Map<String,Object>> list = systemPageLogoDao.getTitle();
String serialNo = "";
if(list.size()>0){
serialNo = list.get(0).get("serialNo").toString();
}
if("".equals(serialNo)||serialNo==null){//新增
serialNo = StringUtils.getUUID(); //生成uuid作为唯一标识
return systemPageLogoDao.saveLoginLogo(serialNo,b);
}else{//更新
return systemPageLogoDao.updateLoginLogo(serialNo,b);
}
}
@Override
public List<SystemPageInfoEntity> getPhoto() {
return systemPageLogoDao.getPhoto();
}
}
DAO:
package com.success.dao;
import ..
@Mapper
public interface SystemPageLogoDao {
/**
* 保存系统照片
* @param serialNo
* @param photo
* @return
*/
int saveLoginLogo(@Param("serialNo") String serialNo,@Param("photo") byte[] photo);
/**
* 获取系统照片
* @return
*/
@Select("select serial_no,copyright_owner,introduce_script,tech_support,login_logo,login_back,homepage_logo,homepage_back from SYSTEM_PAGE_INFO")
List<SystemPageInfoEntity> getPhoto();
}
Mapper:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.success.dao.SystemPageLogoDao">
<!-- 保存登录页logo-->
<insert id="saveLoginLogo">
insert into SYSTEM_PAGE_INFO(serial_no,login_logo) values (#{serialNo},#{photo,jdbcType=BLOB})
</insert>
</Mapper>