返回介绍

77.我的文档安全配置

发布于 2020-09-14 22:20:48 字数 5006 浏览 1058 评论 0 收藏 0

jeecg-boot 提供了文档管理的功能,授权文档管理菜单后可上传文档,也可将文档授权给不同用户、角色及部门。 但文档上传至云服务器时会涉及到文件的安全问题,目前jeecg-boot通过设置私有桶来保证安全问题。

1. 在org.jeecg.common.constant.CommonConstant.java中设置文档上传自定义桶及路径

文档上传时,如果桶名称存在,则直接使用,如果不存在,则创建一个新的桶,默认不设置公开读写权限

/**
 * 文档上传自定义桶名称
 */
public static final String UPLOAD_CUSTOM_BUCKET = "eoafile";
/**
 * 文档上传自定义路径
 */
public static final String UPLOAD_CUSTOM_PATH = "eoafile";
/**
 * Minio文件外链接有效天数
 */
public static final Integer UPLOAD_EFFECTIVE_DAYS = 1;

2. 文档下载时,通过获取文件流的方式下载

/**
 * Minio 获取文件流
 * @param bucketName  桶名称
 * @param objectName 文件名
 * @return
 */
public static InputStream getMinioFile(String bucketName,String objectName){
    InputStream inputStream = null;
    try {
        initMinio(minioUrl, minioName, minioPass);
        inputStream = minioClient.getObject(bucketName, objectName);
    } catch (Exception e) {
        log.info("文件获取失败" + e.getMessage());
    }
    return inputStream;
}
/**
 * OSS 获取文件流
 * @param objectName 文件名
 * @param bucket  桶名称
 * @return
 */
public static InputStream getOssFile(String objectName,String bucket){
    InputStream inputStream = null;
    try{
        String newBucket = bucketName;
        if(oConvertUtils.isNotEmpty(bucket)){
            newBucket = bucket;
        }
        initOSS(endPoint, accessKeyId, accessKeySecret);
        OSSObject ossObject = ossClient.getObject(newBucket,objectName);
        inputStream = new BufferedInputStream(ossObject.getObjectContent());
    }catch (Exception e){
        log.info("文件获取失败" + e.getMessage());
    }
    return inputStream;
}

3. 文档预览时,通过获取文件授权路径

可自定义设置有效时间

/**
 * Minio 获取文件外链
 * @param bucketName 桶名称
 * @param objectName 文件名
 * @param expires  有效时间
 * @return
 */
public static String getObjectURL(String bucketName, String objectName, Integer expires) {
    initMinio(minioUrl, minioName,minioPass);
    try{
        String url = minioClient.presignedGetObject(bucketName, objectName, expires);
        return URLDecoder.decode(url,"UTF-8");
    }catch (Exception e){
        log.info("文件路径获取失败" + e.getMessage());
    }
    return null;
}
/**
 * OSS 获取文件外链
 * @param bucketName 桶名称
 * @param objectName  文件名
 * @param expires  有效时间
 * @return
 */
public static String getObjectURL(String bucketName, String objectName, Date expires) {
    initOSS(endPoint, accessKeyId, accessKeySecret);
    try{
        if(ossClient.doesObjectExist(bucketName,objectName)){
            URL url = ossClient.generatePresignedUrl(bucketName,objectName,expires);
            return URLDecoder.decode(url.toString(),"UTF-8");
        }
    }catch (Exception e){
        log.info("文件路径获取失败" + e.getMessage());
    }
    return null;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文