06媒资管理模块之文件预览

文件预览

图片和视频上传成功后,可以通过预览按钮查看文件内容(如图片和MP4格式视频),对于浏览器不支持查看的文件提示错误信息(如avi格式视频)

06媒资管理模块之文件预览_第1张图片

接口定义

根据上传文件的ID获取文件对应的可访问URL,对于图片或MP4格式的视频可通过浏览器直接预览,对于其他文件如.avi格式的视频文件预览时提示错误信息

@ApiOperation(value = "预览文件")
@GetMapping("/preview/{mediaId}")
public RestResponse<String> getPlayUrlByMediaId(@PathVariable String mediaId) {
    MediaFiles mediaFile = mediaFileService.getFileById(mediaId);
    return RestResponse.success(mediaFile.getUrl());
}

业务类

第一步: 修改保存媒资信息到数据库的方法, 当上传的文件是图片或MP4格式的视频时才设置URL字段,其他情况需要对文件进行处理后再设置URL字段

    /**
     * 将文件信息添加到文件表
     * @param companyId           机构id
     * @param uploadFileParamsDto 上传文件的信息
     * @param objectName          对象名称
     * @param fileMD5             文件的md5码
     * @param bucket              桶
     */
    @Transactional
    public MediaFiles addMediaFilesToDB(Long companyId, UploadFileParamsDto uploadFileParamsDto, String objectName, String fileMD5, String bucket) {
        // 保存文件信息到数据库
        MediaFiles mediaFiles = mediaFilesMapper.selectById(fileMD5);
        if (mediaFiles == null) {
            mediaFiles = new MediaFiles();
            BeanUtils.copyProperties(uploadFileParamsDto, mediaFiles);
            mediaFiles.setId(fileMD5);
            mediaFiles.setFileId(fileMD5);
            mediaFiles.setCompanyId(companyId);
            mediaFiles.setBucket(bucket);
            mediaFiles.setCreateDate(LocalDateTime.now());
            mediaFiles.setStatus("1");
            mediaFiles.setFilePath(objectName);
            // 获取源文件名的contentType
            String contentType = getContentType(objectName);
            // 如果是图片格式或者mp4格式则设置URL属性,否则不设置
            if (contentType.contains("image") || contentType.contains("mp4")) {
                mediaFiles.setUrl("/" + bucket + "/" + objectName);
            }
            // 查阅数据字典,002003表示审核通过
            mediaFiles.setAuditStatus("002003");
        }
        int insert = mediaFilesMapper.insert(mediaFiles);
        if (insert <= 0) {
            XueChengPlusException.cast("保存文件信息失败");
        }
        return mediaFiles;
    }

第二步: 定义接口方法实现根据文件Id获取文件对应URL的业务逻辑

MediaFiles getFileById(String mediaId);
@Override
public MediaFiles getFileById(String id) {
    MediaFiles mediaFiles = mediaFilesMapper.selectById(id);
    if (mediaFiles == null || StringUtils.isEmpty(mediaFiles.getUrl())) {
        XueChengPlusException.cast("视频还没有转码处理");
    }
    return mediaFiles;
}

测试

操作媒资管理界面: 上传图片文件可以预览, 上传MP4视频文件可以预览,上传avi格式视频文件尝试预览提示错误提示信息

06媒资管理模块之文件预览_第2张图片

你可能感兴趣的:(学成在线,java,媒资管理模块,学成在线)