Java教程

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

本文主要是介绍【备战春招】第20天 Minio私有云保存照片文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称: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私有云保存照片文件,期待后续学习!
这篇关于【备战春招】第20天 Minio私有云保存照片文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!