Browse Source

新增阿里云oss 的私有和公有bucket访问相关代码

dev
wxz 5 years ago
parent
commit
5cf29ece5d
  1. 9
      epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/constants/PrivacyType.java
  2. 11
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/AbstractCloudStorageService.java
  3. 49
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/AliyunCloudStorageService.java
  4. 86
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/CloudStorageConfig.java
  5. 16
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/FastDFSCloudStorageService.java
  6. 16
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/LocalCloudStorageService.java
  7. 16
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/QcloudCloudStorageService.java
  8. 16
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/QiniuCloudStorageService.java
  9. 18
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java
  10. 4
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/service/OssService.java
  11. 10
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/service/impl/OssServiceImpl.java

9
epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/constants/PrivacyType.java

@ -0,0 +1,9 @@
package com.epmet.constants;
/**
* 隐私类型
*/
public interface PrivacyType {
String INTERNAL = "internal";
String EXTERNAL = "external";
}

11
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/AbstractCloudStorageService.java

@ -50,15 +50,16 @@ public abstract class AbstractCloudStorageService {
* @param path 文件路径包含文件名
* @return 返回http地址
*/
public abstract String upload(byte[] data, String path);
public abstract String upload(byte[] data, String path, String privacyType);
/**
* 文件上传
* @param data 文件字节数组
* @param suffix 后缀
* @param privacyType 隐私类型默认external外部
* @return 返回http地址
*/
public abstract String uploadSuffix(byte[] data, String suffix);
public abstract String uploadSuffix(byte[] data, String suffix, String privacyType);
/**
* 文件上传
@ -66,7 +67,7 @@ public abstract class AbstractCloudStorageService {
* @param path 文件路径包含文件名
* @return 返回http地址
*/
public abstract String upload(InputStream inputStream, String path);
public abstract String upload(InputStream inputStream, String path, String privacyType);
/**
* 文件上传
@ -74,12 +75,12 @@ public abstract class AbstractCloudStorageService {
* @param suffix 后缀
* @return 返回http地址
*/
public abstract String uploadSuffix(InputStream inputStream, String suffix);
public abstract String uploadSuffix(InputStream inputStream, String suffix, String privacyType);
/**
* 文件下载
* sun
*/
public abstract void down() throws IOException;
public abstract void down(String privacyType) throws IOException;
}

49
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/AliyunCloudStorageService.java

@ -12,6 +12,7 @@ import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.DownloadFileRequest;
import com.aliyun.oss.model.DownloadFileResult;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.constants.PrivacyType;
import com.epmet.exception.ModuleErrorCode;
import java.io.ByteArrayInputStream;
@ -29,39 +30,57 @@ public class AliyunCloudStorageService extends AbstractCloudStorageService {
this.config = config;
}
/**
* @Description 根据隐私类型获取属性传递internal的时候会返回内部的否则返回外部的即公开的
* @return
* @author wxz
* @date 2021.01.04 13:49
*/
private CloudStorageConfig.AliyunCloudStorageConfigProps getPropsByprivacyType(String privacyType) {
if (PrivacyType.INTERNAL.equalsIgnoreCase(privacyType)) {
return config.getAliyun().getInternal();
} else {
return config.getAliyun().getExternal();
}
}
@Override
public String upload(byte[] data, String path) {
return upload(new ByteArrayInputStream(data), path);
public String upload(byte[] data, String path, String privacyType) {
return upload(new ByteArrayInputStream(data), path, privacyType);
}
@Override
public String upload(InputStream inputStream, String path) {
OSSClient client = new OSSClient(config.getAliyunEndPoint(), config.getAliyunAccessKeyId(),
config.getAliyunAccessKeySecret());
public String upload(InputStream inputStream, String path, String privacyType) {
CloudStorageConfig.AliyunCloudStorageConfigProps props = getPropsByprivacyType(privacyType);
OSSClient client = new OSSClient(props.getAliyunEndPoint(), props.getAliyunAccessKeyId(),
props.getAliyunAccessKeySecret());
try {
client.putObject(config.getAliyunBucketName(), path, inputStream);
client.putObject(props.getAliyunBucketName(), path, inputStream);
client.shutdown();
} catch (Exception e){
throw new RenException(ModuleErrorCode.OSS_UPLOAD_FILE_ERROR, e, "");
}
return config.getAliyunDomain() + "/" + path;
return props.getAliyunDomain() + "/" + path;
}
@Override
public String uploadSuffix(byte[] data, String suffix) {
return upload(data, getPath(config.getAliyunPrefix(), suffix));
public String uploadSuffix(byte[] data, String suffix, String privacyType) {
CloudStorageConfig.AliyunCloudStorageConfigProps props = getPropsByprivacyType(privacyType);
return upload(data, getPath(props.getAliyunPrefix(), suffix), privacyType);
}
@Override
public String uploadSuffix(InputStream inputStream, String suffix) {
return upload(inputStream, getPath(config.getAliyunPrefix(), suffix));
public String uploadSuffix(InputStream inputStream, String suffix, String privacyType) {
CloudStorageConfig.AliyunCloudStorageConfigProps props = getPropsByprivacyType(privacyType);
return upload(inputStream, getPath(props.getAliyunPrefix(), suffix), privacyType);
}
@Override
public void down() throws IOException {
OSSClient client = new OSSClient(config.getAliyunEndPoint(), config.getAliyunAccessKeyId(),
config.getAliyunAccessKeySecret());
public void down(String privacyType) throws IOException {
CloudStorageConfig.AliyunCloudStorageConfigProps props = getPropsByprivacyType(privacyType);
OSSClient client = new OSSClient(props.getAliyunEndPoint(), props.getAliyunAccessKeyId(),
props.getAliyunAccessKeySecret());
try {
/*
@ -88,7 +107,7 @@ public class AliyunCloudStorageService extends AbstractCloudStorageService {
}*/
//方式三
DownloadFileRequest downloadFileRequest = new DownloadFileRequest(config.getAliyunBucketName(), "epmet/test/20201103/198f3c11490a44eb964c5c8e9989a507.jpg");
DownloadFileRequest downloadFileRequest = new DownloadFileRequest(props.getAliyunBucketName(), "epmet/test/20201103/198f3c11490a44eb964c5c8e9989a507.jpg");
downloadFileRequest.setDownloadFile("C:/Users/Administrator/Desktop/dd/4.jpg");// 本地下载文件名称
downloadFileRequest.setPartSize(1 * 1024 * 1024);// 分片大小,取值范围为1B~5GB。
downloadFileRequest.setTaskNum(10);//10个任务并发下载,默认值为1

86
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/CloudStorageConfig.java

@ -56,29 +56,29 @@ public class CloudStorageConfig implements Serializable {
@NotBlank(message="{qiniu.bucketname.require}", groups = QiniuGroup.class)
private String qiniuBucketName;
@ApiModelProperty(value = "阿里云绑定的域名")
@NotBlank(message="{aliyun.domain.require}", groups = AliyunGroup.class)
@URL(message = "{aliyun.domain.url}", groups = AliyunGroup.class)
private String aliyunDomain;
@ApiModelProperty(value = "阿里云路径前缀")
private String aliyunPrefix;
@ApiModelProperty(value = "阿里云EndPoint")
@NotBlank(message="{aliyun.endPoint.require}", groups = AliyunGroup.class)
private String aliyunEndPoint;
@ApiModelProperty(value = "阿里云AccessKeyId")
@NotBlank(message="{aliyun.accesskeyid.require}", groups = AliyunGroup.class)
private String aliyunAccessKeyId;
@ApiModelProperty(value = "阿里云AccessKeySecret")
@NotBlank(message="{aliyun.accesskeysecret.require}", groups = AliyunGroup.class)
private String aliyunAccessKeySecret;
@ApiModelProperty(value = "阿里云BucketName")
@NotBlank(message="{aliyun.bucketname.require}", groups = AliyunGroup.class)
private String aliyunBucketName;
//@ApiModelProperty(value = "阿里云绑定的域名")
//@NotBlank(message="{aliyun.domain.require}", groups = AliyunGroup.class)
//@URL(message = "{aliyun.domain.url}", groups = AliyunGroup.class)
//private String aliyunDomain;
//
//@ApiModelProperty(value = "阿里云路径前缀")
//private String aliyunPrefix;
//
//@ApiModelProperty(value = "阿里云EndPoint")
//@NotBlank(message="{aliyun.endPoint.require}", groups = AliyunGroup.class)
//private String aliyunEndPoint;
//
//@ApiModelProperty(value = "阿里云AccessKeyId")
//@NotBlank(message="{aliyun.accesskeyid.require}", groups = AliyunGroup.class)
//private String aliyunAccessKeyId;
//
//@ApiModelProperty(value = "阿里云AccessKeySecret")
//@NotBlank(message="{aliyun.accesskeysecret.require}", groups = AliyunGroup.class)
//private String aliyunAccessKeySecret;
//
//@ApiModelProperty(value = "阿里云BucketName")
//@NotBlank(message="{aliyun.bucketname.require}", groups = AliyunGroup.class)
//private String aliyunBucketName;
@ApiModelProperty(value = "腾讯云绑定的域名")
@NotBlank(message="{qcloud.domain.require}", groups = QcloudGroup.class)
@ -125,4 +125,44 @@ public class CloudStorageConfig implements Serializable {
@NotBlank(message="{local.path.url}", groups = LocalGroup.class)
private String localPath;
private AliyunCloudStorageConfig aliyun;
/**
* 阿里云存储配置
*/
@Data
public static class AliyunCloudStorageConfig {
private AliyunCloudStorageConfigProps internal;
private AliyunCloudStorageConfigProps external;
}
/**
* 阿里云存储配置属性
*/
@Data
public static class AliyunCloudStorageConfigProps {
@ApiModelProperty(value = "阿里云绑定的域名")
@NotBlank(message="{aliyun.domain.require}", groups = AliyunGroup.class)
@URL(message = "{aliyun.domain.url}", groups = AliyunGroup.class)
private String aliyunDomain;
@ApiModelProperty(value = "阿里云路径前缀")
private String aliyunPrefix;
@ApiModelProperty(value = "阿里云EndPoint")
@NotBlank(message="{aliyun.endPoint.require}", groups = AliyunGroup.class)
private String aliyunEndPoint;
@ApiModelProperty(value = "阿里云AccessKeyId")
@NotBlank(message="{aliyun.accesskeyid.require}", groups = AliyunGroup.class)
private String aliyunAccessKeyId;
@ApiModelProperty(value = "阿里云AccessKeySecret")
@NotBlank(message="{aliyun.accesskeysecret.require}", groups = AliyunGroup.class)
private String aliyunAccessKeySecret;
@ApiModelProperty(value = "阿里云BucketName")
@NotBlank(message="{aliyun.bucketname.require}", groups = AliyunGroup.class)
private String aliyunBucketName;
}
}

16
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/FastDFSCloudStorageService.java

@ -35,12 +35,12 @@ public class FastDFSCloudStorageService extends AbstractCloudStorageService {
}
@Override
public String upload(byte[] data, String path) {
return upload(new ByteArrayInputStream(data), path);
public String upload(byte[] data, String path, String privacyType) {
return upload(new ByteArrayInputStream(data), path, privacyType);
}
@Override
public String upload(InputStream inputStream, String suffix) {
public String upload(InputStream inputStream, String suffix, String privacyType) {
StorePath storePath;
try {
storePath = defaultGenerateStorageClient.uploadFile("group1", inputStream, inputStream.available(), suffix);
@ -52,17 +52,17 @@ public class FastDFSCloudStorageService extends AbstractCloudStorageService {
}
@Override
public String uploadSuffix(byte[] data, String suffix) {
return upload(data, suffix);
public String uploadSuffix(byte[] data, String suffix, String privacyType) {
return upload(data, suffix, privacyType);
}
@Override
public String uploadSuffix(InputStream inputStream, String suffix) {
return upload(inputStream, suffix);
public String uploadSuffix(InputStream inputStream, String suffix, String privacyType) {
return upload(inputStream, suffix, privacyType);
}
@Override
public void down() throws IOException {
public void down(String privacyType) throws IOException {
}
}

16
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/LocalCloudStorageService.java

@ -29,12 +29,12 @@ public class LocalCloudStorageService extends AbstractCloudStorageService {
}
@Override
public String upload(byte[] data, String path) {
return upload(new ByteArrayInputStream(data), path);
public String upload(byte[] data, String path, String privacyType) {
return upload(new ByteArrayInputStream(data), path, privacyType);
}
@Override
public String upload(InputStream inputStream, String path) {
public String upload(InputStream inputStream, String path, String privacyType) {
File file = new File(config.getLocalPath() + File.separator + path);
try {
FileUtils.copyToFile(inputStream, file);
@ -45,17 +45,17 @@ public class LocalCloudStorageService extends AbstractCloudStorageService {
}
@Override
public String uploadSuffix(byte[] data, String suffix) {
return upload(data, getPath(config.getLocalPrefix(), suffix));
public String uploadSuffix(byte[] data, String suffix, String privacyType) {
return upload(data, getPath(config.getLocalPrefix(), suffix), privacyType);
}
@Override
public String uploadSuffix(InputStream inputStream, String suffix) {
return upload(inputStream, getPath(config.getLocalPrefix(), suffix));
public String uploadSuffix(InputStream inputStream, String suffix, String privacyType) {
return upload(inputStream, getPath(config.getLocalPrefix(), suffix), privacyType);
}
@Override
public void down() throws IOException {
public void down(String privacyType) throws IOException {
}
}

16
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/QcloudCloudStorageService.java

@ -48,12 +48,12 @@ public class QcloudCloudStorageService extends AbstractCloudStorageService {
}
@Override
public String upload(byte[] data, String path) {
return upload(new ByteArrayInputStream(data), path);
public String upload(byte[] data, String path, String privacyType) {
return upload(new ByteArrayInputStream(data), path, privacyType);
}
@Override
public String upload(InputStream inputStream, String path) {
public String upload(InputStream inputStream, String path, String privacyType) {
try {
COSClient client = new COSClient(credentials, clientConfig);
@ -75,17 +75,17 @@ public class QcloudCloudStorageService extends AbstractCloudStorageService {
}
@Override
public String uploadSuffix(byte[] data, String suffix) {
return upload(data, getPath(config.getQcloudPrefix(), suffix));
public String uploadSuffix(byte[] data, String suffix, String privacyType) {
return upload(data, getPath(config.getQcloudPrefix(), suffix), privacyType);
}
@Override
public String uploadSuffix(InputStream inputStream, String suffix) {
return upload(inputStream, getPath(config.getQcloudPrefix(), suffix));
public String uploadSuffix(InputStream inputStream, String suffix, String privacyType) {
return upload(inputStream, getPath(config.getQcloudPrefix(), suffix), privacyType);
}
@Override
public void down() throws IOException {
public void down(String privacyType) throws IOException {
}
}

16
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/QiniuCloudStorageService.java

@ -45,7 +45,7 @@ public class QiniuCloudStorageService extends AbstractCloudStorageService {
}
@Override
public String upload(byte[] data, String path) {
public String upload(byte[] data, String path, String privacyType) {
try {
Response res = uploadManager.put(data, path, token);
if (!res.isOK()) {
@ -59,27 +59,27 @@ public class QiniuCloudStorageService extends AbstractCloudStorageService {
}
@Override
public String upload(InputStream inputStream, String path) {
public String upload(InputStream inputStream, String path, String privacyType) {
try {
byte[] data = IOUtils.toByteArray(inputStream);
return this.upload(data, path);
return this.upload(data, path, privacyType);
} catch (IOException e) {
throw new RenException(ModuleErrorCode.OSS_UPLOAD_FILE_ERROR, e, "");
}
}
@Override
public String uploadSuffix(byte[] data, String suffix) {
return upload(data, getPath(config.getQiniuPrefix(), suffix));
public String uploadSuffix(byte[] data, String suffix, String privacyType) {
return upload(data, getPath(config.getQiniuPrefix(), suffix), privacyType);
}
@Override
public String uploadSuffix(InputStream inputStream, String suffix) {
return upload(inputStream, getPath(config.getQiniuPrefix(), suffix));
public String uploadSuffix(InputStream inputStream, String suffix, String privacyType) {
return upload(inputStream, getPath(config.getQiniuPrefix(), suffix), privacyType);
}
@Override
public void down() throws IOException {
public void down(String privacyType) throws IOException {
}
}

18
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java

@ -114,7 +114,7 @@ public class OssController {
//上传文件
String extension = FilenameUtils.getExtension(file.getOriginalFilename());
String url = OssFactory.build().uploadSuffix(file.getBytes(), extension);
String url = OssFactory.build().uploadSuffix(file.getBytes(), extension, null);
//保存文件信息
OssEntity ossEntity = new OssEntity();
@ -147,17 +147,17 @@ public class OssController {
**/
@PostMapping("uploadimg")
public Result<UploadImgResultDTO> uploadImg(@RequestParam("file") MultipartFile file) {
return ossService.uploadImg(file);
return ossService.uploadImg(file, null);
}
@PostMapping("uploadwximg")
public Result<UploadImgResultDTO> uploadWxImg(@RequestPart("media") MultipartFile media) {
return ossService.uploadImg(media);
return ossService.uploadImg(media, null);
}
@PostMapping("uploadqrcode")
public Result<UploadImgResultDTO> uploadQrCode(@RequestPart(value = "file") MultipartFile file) {
return ossService.uploadImg(file);
return ossService.uploadImg(file, null);
}
/**
@ -183,7 +183,7 @@ public class OssController {
, EpmetErrorCode.OPER_UPLOAD_FILE_OVER_SIZE.getMsg());
}
return ossService.uploadImg(file);
return ossService.uploadImg(file, null);
}
@PostMapping("function/upload")
@ -203,7 +203,7 @@ public class OssController {
, EpmetErrorCode.OPER_UPLOAD_FILE_OVER_SIZE.getMsg());
}
return ossService.uploadImg(file);
return ossService.uploadImg(file, null);
}
@PostMapping("article/upload")
@ -225,7 +225,7 @@ public class OssController {
, EpmetErrorCode.OPER_UPLOAD_FILE_OVER_SIZE.getMsg());
}
return ossService.uploadImg(file);
return ossService.uploadImg(file, null);
}
@ -255,7 +255,7 @@ public class OssController {
, EpmetErrorCode.OPER_UPLOAD_IMG_SIZE_ERROR.getMsg());
}
return ossService.uploadImg(file);
return ossService.uploadImg(file, null);
}
/**
@ -269,7 +269,7 @@ public class OssController {
//byte[] byteFile = file.getBytes();
InputStream inputStream = new ByteArrayInputStream(byteFile);
MultipartFile filse = new MockMultipartFile(ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
return ossService.extUpload(filse,fileName);
return ossService.extUpload(filse,fileName, null);
}
}

4
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/service/OssService.java

@ -28,7 +28,7 @@ public interface OssService extends BaseService<OssEntity> {
int insertOssEntity(OssEntity ossEntity);
Result<UploadImgResultDTO> uploadImg(MultipartFile file);
Result<UploadImgResultDTO> uploadImg(MultipartFile file, String privacy);
Result<UploadImgResultDTO> extUpload(MultipartFile file, String fileName);
Result<UploadImgResultDTO> extUpload(MultipartFile file, String fileName, String privacy);
}

10
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/service/impl/OssServiceImpl.java

@ -48,7 +48,7 @@ public class OssServiceImpl extends BaseServiceImpl<OssDao, OssEntity> implement
}
@Override
public Result<UploadImgResultDTO> uploadImg(MultipartFile file) {
public Result<UploadImgResultDTO> uploadImg(MultipartFile file, String privacy) {
if (file.isEmpty()) {
return new Result<UploadImgResultDTO>().error(ModuleErrorCode.UPLOAD_FILE_EMPTY);
}
@ -56,7 +56,7 @@ public class OssServiceImpl extends BaseServiceImpl<OssDao, OssEntity> implement
String extension = FilenameUtils.getExtension(file.getOriginalFilename());
String url = null;
try {
url = OssFactory.build().uploadSuffix(file.getBytes(), extension);
url = OssFactory.build().uploadSuffix(file.getBytes(), extension, privacy);
} catch (IOException e) {
e.printStackTrace();
logger.error("图片上传异常");
@ -74,9 +74,9 @@ public class OssServiceImpl extends BaseServiceImpl<OssDao, OssEntity> implement
}
@Override
public Result<UploadImgResultDTO> extUpload(MultipartFile file, String fileName) {
public Result<UploadImgResultDTO> extUpload(MultipartFile file, String fileName, String privacy) {
try {
OssFactory.build().down();
OssFactory.build().down(privacy);
} catch (IOException e) {
e.printStackTrace();
}
@ -88,7 +88,7 @@ public class OssServiceImpl extends BaseServiceImpl<OssDao, OssEntity> implement
String extension = FilenameUtils.getExtension(fileName);
String url = null;
try {
url = OssFactory.build().uploadSuffix(file.getBytes(), extension);
url = OssFactory.build().uploadSuffix(file.getBytes(), extension, privacy);
} catch (IOException e) {
e.printStackTrace();
logger.error("图片上传异常");

Loading…
Cancel
Save