学成在线踩坑

 这段时间在做学成在线的过程中,偷懒遇到了一个这个问题,这个问题是直接跑老师的程序出现的,配置文件方面并没有出其他情况,找了半天,没找到错误。最后因为分析可能是MediaFileServiceImpl.java这个代码出了问题,于是乎打断点,发现应该是checkFile和checkChunk函数的问题,原来的checkFile和checkChunk函数是这个

     public RestResponse<Boolean> checkFile(String fileMd5) {
        //先查询数据库
        MediaFiles mediaFiles = mediaFilesMapper.selectById(fileMd5);
        if(mediaFiles!=null){
            //桶
            String bucket = mediaFiles.getBucket();
            //objectname
            String filePath = mediaFiles.getFilePath();
            //如果数据库存在再查询 minio
            GetObjectArgs getObjectArgs = GetObjectArgs.builder()
                    .bucket(bucket)
                    .object(filePath)
                    .build();
            //查询远程服务获取到一个流对象
            try {
                FilterInputStream inputStream = minioClient.getObject(getObjectArgs);
                if(inputStream!=null){
                    //文件已存在
                    return RestResponse.success(true);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

        //文件不存在
        return RestResponse.success(false);
    }

    public RestResponse<Boolean> checkChunk(String fileMd5, int chunkIndex) {

        //根据md5得到分块文件所在目录的路径
        String chunkFileFolderPath = getChunkFileFolderPath(fileMd5);

        //如果数据库存在再查询 minio
        GetObjectArgs getObjectArgs = GetObjectArgs.builder()
                .bucket(bucket_video)
                .object(chunkFileFolderPath+chunkIndex)
                .build();
        //查询远程服务获取到一个流对象
        try {
            FilterInputStream inputStream = minioClient.getObject(getObjectArgs);
            if(inputStream!=null){
                //文件已存在
                return RestResponse.success(true);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        //文件不存在
        return RestResponse.success(false);
    }

可以改为:

    public RestResponse<Boolean> checkFile(String fileMd5) {
        //查询文件信息
        MediaFiles mediaFiles = mediaFilesMapper.selectById(fileMd5);
        if (mediaFiles != null) {
            //桶
            String bucket = mediaFiles.getBucket();
            //存储目录
            String filePath = mediaFiles.getFilePath();
            //文件流
            InputStream stream = null;
            try {
                stream = minioClient.getObject(
                        GetObjectArgs.builder()
                                .bucket(bucket)
                                .object(filePath)
                                .build());

                if (stream != null) {
                    //文件已存在
                    return RestResponse.success(true);
                }
            } catch (Exception e) {

            }
        }
        //文件不存在
        return RestResponse.success(false);
    }


    public RestResponse<Boolean> checkChunk(String fileMd5, int chunkIndex) {

        //得到分块文件目录
        String chunkFileFolderPath = getChunkFileFolderPath(fileMd5);
        //得到分块文件的路径
        String chunkFilePath = chunkFileFolderPath + chunkIndex;

        //文件流
        InputStream fileInputStream = null;
        try {
            fileInputStream = minioClient.getObject(
                    GetObjectArgs.builder()
                            .bucket(bucket_video)
                            .object(chunkFilePath)
                            .build());

            if (fileInputStream != null) {
                //分块已存在
                return RestResponse.success(true);
            }
        } catch (Exception e) {

        }
        //分块未存在
        return RestResponse.success(false);
    }

具体原因,等后面抽空再研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activiti是一个流程引擎,用于管理和执行工作流程。在使用Activiti时,有一些常见的问题和需要注意。以下是一些可能会遇到的问题和解决方法: 1. 数据库问题:Activiti使用数据库来存储流程实例、任务、历史数据等。在使用Activiti之前,确保已正确配置并连接了数据库。 2. 配置问题:Activiti需要一个activiti.cfg.xml文件来配置引擎的属性,如数据库连接信息和流程定义文件的位置。确保配置文件正确地指定了这些属性。 3. 流程定义问题:在部署流程定义时,确保流程定义文件(通常是一个BPMN文件)位于正确的位置,并且包含了正确的流程定义和任务。 4. 用户任务问题:如果你在流程中使用了用户任务,确保在任务分配给用户之前,已经创建了相应的用户或用户组,并且用户具有执行该任务的权限。 5. 并发问题:当多个用户同时执行流程时,可能会出现并发问题。确保在设计流程时考虑到并发情况,并使用适当的锁机制来处理共享资源。 6. 异常处理问题:在执行流程过程中可能会出现异常情况,如任务超时或执行失败。确保适当地处理这些异常,并记录错误信息以便后续排查。 7. 版本问题:如果你更新了流程定义或者修改了流程模型,确保在部署新版本之前,旧版本的流程实例已经完成或被中止。 这些是一些常见的Activiti问题,希望对你有所帮助。如果你有具体的问题或者其他方面的疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值