凡客网站登陆,wordpress别人访问时不能正常显示,培训学校加盟费用,软文广告发稿文章目录 阿里云 OSS 介绍准备工作SpringBoot 集成 OSS 阿里云 OSS 介绍
阿里云对象存储 OSS #xff08;Object Storage Service#xff09;#xff0c;是一款海量、安全、低成本、高可靠的云存储服务。使用 OSS#xff0c;你可以通过网络随时存储和调用包括文本、图片、… 文章目录 阿里云 OSS 介绍准备工作SpringBoot 集成 OSS 阿里云 OSS 介绍
阿里云对象存储 OSS Object Storage Service是一款海量、安全、低成本、高可靠的云存储服务。使用 OSS你可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。 准备工作 登录阿里云后进入阿里云控制台首页选择 对象存储 OSS 服务 开通服务 创建Bucket 填写 bucket 名称 选存储空间归属的地域 选择读写权限为公共读 4. 获取密钥 创建 AccessKey 保存 AccessKey ID 和 AccessKey Secret SpringBoot 集成 OSS
可以参考 官网 SDK 文档
导入 maven 坐标
dependencygroupIdcom.aliyun.oss/groupIdartifactIdaliyun-sdk-oss/artifactIdversion${aliyun.sdk.oss}/version
/dependency
dependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactIdversion${jaxb-api}/version
/dependency如果是 Java 9 及以上版本还需要导入其他坐标
在 yml 中添加配置 对应的配置类 编写 AliOssUtil
Data
AllArgsConstructor
Slf4j
public class AliOssUtil {private String endpoint;private String accessKeyId;private String accessKeySecret;private String bucketName;/*** 文件上传** param bytes* param objectName* return*/public String upload(byte[] bytes, String objectName) {// 创建OSSClient实例。OSS ossClient new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 创建PutObject请求。ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(bytes));} catch (OSSException oe) {System.out.println(Caught an OSSException, which means your request made it to OSS, but was rejected with an error response for some reason.);System.out.println(Error Message: oe.getErrorMessage());System.out.println(Error Code: oe.getErrorCode());System.out.println(Request ID: oe.getRequestId());System.out.println(Host ID: oe.getHostId());} catch (ClientException ce) {System.out.println(Caught an ClientException, which means the client encountered a serious internal problem while trying to communicate with OSS, such as not being able to access the network.);System.out.println(Error Message: ce.getMessage());} finally {if (ossClient ! null) {ossClient.shutdown();}}//文件访问路径规则 https://BucketName.Endpoint/ObjectNameStringBuilder stringBuilder new StringBuilder(https://);stringBuilder.append(bucketName).append(.).append(endpoint).append(/).append(objectName);log.info(文件上传到:{}, stringBuilder.toString());return stringBuilder.toString();}
}配置 OSS Configuration
/*** 配置类用于创建AliOssUtil对象*/
Configuration
Slf4j
public class OssConfiguration {BeanConditionalOnMissingBeanpublic AliOssUtil aliOssUtil(AliOssProperties aliOssProperties){log.info(开始创建阿里云文件上传工具类对象{}, aliOssProperties);return new AliOssUtil(aliOssProperties.getEndpoint(),aliOssProperties.getAccessKeyId(),aliOssProperties.getAccessKeySecret(),aliOssProperties.getBucketName());}
}编写通用上传文件接口
/*** 通用接口*/
RestController
RequestMapping(/admin/common)
Api(tags 通用接口)
Slf4j
public class CommonController {Autowiredprivate AliOssUtil aliOssUtil;PostMapping(/upload)ApiOperation(文件上传)public ResultString upload(MultipartFile file){log.info(文件上传{}, file);try {// 原始文件名String originalFilename file.getOriginalFilename();// 后缀String extension originalFilename.substring(originalFilename.lastIndexOf(.));String objectName UUID.randomUUID().toString() extension;// 文件的请求路径String filePath aliOssUtil.upload(file.getBytes(), objectName);return Result.success(filePath);} catch (IOException e) {log.error(文件上传失败{}, e);}return Result.error(MessageConstant.UPLOAD_FAILED);}
}上传文件到 OSS
从前端调用上面的上传文件的接口就可以将文件上传到 OSS 上并且获取到访问 OSS 文件路径的 URL 地址。