springboot+ spring data jpa+swagger 编写上传图片接口

基于基础的配置在这里就不多说了。目前上传的代码附件只是为了给读者提供思路罢了,具体的还是看自己的业务逻辑进行参考。若是有好的想法和写法,可以留言共享。

controller层:

 @ApiOperation(value = "上传图片接口",notes = "属于全部修改")
    @PostMapping(value = "/video/add")
    public Map<String,Object> add(HeadPortraitUsers headPortraitUsers, @RequestParam(value = "file", required = false)
            MultipartFile file) throws IllegalStateException, IOException {
            Map<String,Object> resultMap = new HashMap<>();
            log.info("上传的头像名为========================:" + file);
        if (file == null) {
            /* headPortraitRepository.save(headPortraitUsers);*/
            resultMap.put("code", "0001");
            resultMap.put("message", "上传的图片不能为空");
        } else {
            String str="E://temp-imgs//"; //图像暂时存放的地址
            String fileName = file.getOriginalFilename();//获取上传文件的名称
            //重命名
            /*Date now = new Date();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//可以方便地修改日期格式
            String hehe = dateFormat.format( now );*/

            /* //以下是获取当前时间并将其转化为String类型的拼接进去
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
            String nowTime = sdf.format(date);*/

            fileName = UUID.randomUUID().toString().replace("-", "")
                    + fileName.substring(fileName.lastIndexOf("."));
            //若是图片想以当前日期命名,可以选择下面这种
            //fileName = nowTime + fileName.substring(fileName.lastIndexOf("."));
            String suffixName = fileName.substring(fileName.lastIndexOf("."));  // 后缀名
            log.info("图片的后缀名为===========:" + suffixName);
            if(!suffixName.equals(".jpg") && !suffixName.equals(".png")){
                resultMap.put("code", "999");
                resultMap.put("message", "请选择以jpg或png格式的文件");
                return resultMap;
            }

            File saveFile = new File( str + fileName); //上传后,图像的路径
            log.info("图像文件上传后的路径为======:" + saveFile);
            if (!saveFile.getParentFile().exists()) {
                saveFile.getParentFile().mkdirs();
            }

            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(saveFile));
            out.write(file.getBytes());
            //FilterOutputStream 的 close 方法先调用其 flush 方法,然后调用其基础输出流的 close 方法。
            out.flush();
            out.close();
            //把得到的路径名存到实体类的字段中
            headPortraitUsers.setPortrait(fileName);
            //直接使用jpa的方法进行添加,底层是若没有就添加,有则进行修改
            headPortraitRepository.save(headPortraitUsers);
            resultMap.put("code", "0000");
            resultMap.put("message", "上传成功");
        }
        return resultMap;

    }

这个只是jpa中的做法。是直接调用jpa中的固有方法进行添加的。但是这样写的时候,有个弊端:就是你传入数据的时候,只能以实体类传进去。有个缺点就是,你要是用户表里面有其他字段,也会进行修改,有点难受。我本来想的是通过id去修改图片,jpa提供的方法,有一个重要的点就是有的话就修改,没有的话就添加,这点是很不错的。 但是像我这样写的话。数据库会多一个表出来,这样也会增加数据的负担。 若是有哪位大哥有好的想法,或者能直接用id进行修改或者添加的话,也可以在下面进行留言~ 大家一起进步!

需要主要的是。这个层没有用到service层,而是直接跳到接口层。调用底层方法的。

repository层:
在这里插入图片描述

非常感谢您阅读我的文章,若有其他想法或者文章中有所不足的。
					还望指出。非常感谢!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值