我的文档安全配置
最后更新于:2022-04-02 07:12:34
# 我的文档安全配置
jeecg-boot 提供了文档管理的功能,授权文档管理菜单后可上传文档,也可将文档授权给不同用户、角色及部门。
但文档上传至云服务器时会涉及到文件的安全问题,目前jeecg-boot通过设置私有桶来保证安全问题。
[TOC]
## 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;
}
~~~
';