mybatis 将二进制文件写入数据库保存,和文件下载

上传
public AjaxResult up(MultipartFile file) throws Exception {
    if (null == file) {
        return AjaxResult.error("文件为空");
    }
    byte[] imgbytes = file.getBytes();
 
    String filename = file.getOriginalFilename();
  
    logger.info("===filename===" + filename);
    Attachment attachment = new Attachment();
    attachment.setData(imgbytes);
    attachment.setFilename(filename);
    yqSelfService.addAttachment(attachment);
    return AjaxResult.success("成功", attachment.getId());

}

 

 <insert id="addAttachment" useGeneratedKeys="true" keyProperty="id" parameterType="Attachment">
insert into  attachment (filename,`data`) values (#{filename},#{data,typeHandler=org.apache.ibatis.type.BlobTypeHandler})
 </insert>

文件下载

 @GetMapping(value = "/down/file")
    public AjaxResult importData(Long id, HttpServletResponse response) throws Exception {
        byte[] imgbytes = yqSelfService.findAttachment(id);
        if (null != imgbytes) {
            OutputStream out = response.getOutputStream();
            out.write(imgbytes);
        }
        return null;
    }
   public byte[] findAttachment(Long id) {
        try {
            Map<String, Object> map = yqSelfMapper.findAttachment(id);
            return (byte[]) map.get("data");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    <resultMap type="java.util.Map" id="imgResultMap" >
        <result  property="data" column="data" jdbcType="BLOB"  typeHandler="org.apache.ibatis.type.BlobTypeHandler"/>
    </resultMap>

    <select id="findAttachment" parameterType="map" resultMap="imgResultMap">
        SELECT   a.`data`   FROM attachment  a WHERE a.id= #{id}
    </select>

前端展示

<img src="https://xxxx.com/v1.0/down/file?id=3">

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值