从请求中拿到文件存储到数据库,并能从数据库恢复到本地的方法

这里用的是图片进行测试

文件保存于数据库

首先前端拿到文件,在java中使用的是 MultipartFile 这个类
前端代码中:

<input type="file" id="f1" name="file1" xxxxxxxxxx>

这里的name=“file1” 很重要 因为对应后端是:

@RequestMapping("/自己写")
    public String uploadimg(HttpServletRequest request, HttpServletResponse response,
                          @RequestParam("file1") MultipartFile file1)throws Exception {
                          自己写的代码块
                          }

这里的 @RequestParam(“file1”)中的 file1 就和前端的 file1 对应了起来 所以 不能乱起名
这样就拿到前端传过来的文件
然后 转换成2进制

byte[] bytes1 = file1.getBytes();

就这一句代码即可
接着就是存入数据库

首先数据库对应的格式要正确
在这里插入图片描述
数据库类型要设置成blob的类型,mediumbolb只是能存储的文件的大小不一样而已,但归根结底也是blob类型,无伤大雅。

那么一个表基本上会对应一个实体类,另外,例如数据库中的 varchar 、text都对应java中的String
那么 blob对应什么类型呢 对应java中的 byte[] 所以,java的实体类应该是

    private String xxxxx;
    private String xxxx;
    private byte[] img1;//看这里
    private xxxxxxx xxxxxx;

实体类写完了 下面就是写Mapper文件 以及写xml文件
在写xml文件的时候需要注意:

        insert into 表名
        values (
                #{某某某},
                #{某某某},
                #{img1,typeHandler=org.apache.ibatis.type.BlobTypeHandler},
                #{某某某}
                )
    </insert>

这么写就好 其他的都没什么需要注意的
下面就是写Service 什么什么的 这个都没什么不同
至此,文件保存至数据库结束

文件从数据库恢复

  • 自己写select语句
  • 拿到封装好的对象 然后用他的 .get()方法得到byte[]数组
  • 使用 FileOutputStream fileOutputStream=new FileOutputStream(
    new File(你想把图片恢复到哪个位置,写个绝对路径在这里,注意!!!是路径+文件名+后缀 ) );
  • 然后 fileOutputStream.write(刚才得到的那个byte[]);
  • 恢复完成 记得关闭流
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值