# 我的文档安全配置 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; } ~~~