为了账号安全,请及时绑定邮箱和手机立即绑定

【备战春招】第20天 Minio私有云保存照片文件

标签:
SpringBoot

课程名称:SpringBoot2.X + Vue + UniAPP,全栈开发医疗小程序

课程章节:第三章 使用Vue3.0+SpringBoot实现医护人员管理

课程讲师: 神思者

课程内容:

一、编写持久层代码

因为上传成功照片之后,要更新医生表的photo字段值,所以要在DoctorDao.xml文件中,声明SQL语句。Phoenix更新数据不能用UPDATE语句(不支持),必须使用UPSERT INTO语句。

<update id="updatePhoto" parameterType="Map">

    UPSERT INTO HOSPITAL.DOCTOR("id", "photo")

    VALUES(${id}, #{photo})

</update>


com.example.hospital.api.db.daoDoctorDao接口中,声明抽象方法。

public interface DoctorDao {

    ……

    public void updatePhoto(Map param);

}

二、编写业务层代码

com.example.hospital.api.serviceDoctorService接口中,声明抽象方法。

public interface DoctorService {

    ……

    public void updatePhoto(MultipartFile file, Integer doctorId);

}


com.example.hospital.api.service.implDoctorServiceImpl类中,实现抽象方法。

@Service

@Slf4j

public class DoctorServiceImpl implements DoctorService {

    @Value("${minio.endpoint}")

    private String endpoint;


    @Value("${minio.access-key}")

    private String accessKey;


    @Value("${minio.secret-key}")

    private String secretKey;


    ……


    @Override

    @Transactional

    public void updatePhoto(MultipartFile file, Integer doctorId) {

        try {

            String filename = "doctor-" + doctorId + ".jpg";

            //在Minio中保存医生照片

            MinioClient client = new MinioClient.Builder().endpoint(endpoint)

                    .credentials(accessKey, secretKey).build();

            

            client.putObject(PutObjectArgs.builder().bucket("hospital")

                    .object("doctor/" + filename)

                    .stream(file.getInputStream(), -1, 5 * 1024 * 1024)

                    .contentType("image/jpeg").build());


            //更新医生表photo字段

            doctorDao.updatePhoto(new HashMap() {{

                put("id", doctorId);

                put("photo", "/doctor/" + filename);

            }});

        } catch (Exception e) {

            log.error("保存医生照片失败", e);

            throw new HospitalException("保存医生照片失败");

        }

    }

    

}

三、编写Web层代码

com.example.hospital.api.controllerDoctorController类中,声明Web方法。

@RestController

@RequestMapping("/doctor")

public class DoctorController {

    @PostMapping("/updatePhoto")

    @SaCheckLogin

    @SaCheckPermission(value = {"ROOT", "DOCTOR:UPDATE"}, mode = SaMode.OR)

    public R updatePhoto(@Param("file") MultipartFile file, @Param("doctorId") Integer doctorId) {

        doctorService.updatePhoto(file, doctorId);

        return R.ok();

    }

}


https://img1.sycdn.imooc.com//63fbf4570001debe17210875.jpg

课程收获:通过视频加文档结合的方式,学习了Minio私有云保存照片文件,期待后续学习!
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消