图片上传到数据库,保存到Blob字段中

需求:从系统上传图片,将图片信息保存到数据库的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>

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值