0


【SpringBoot篇】阿里云OSS—存储文件的利器

文章目录

在这里插入图片描述

🌹什么是阿里云OSS

阿里云对象存储(Alibaba Cloud Object Storage Service,简称OSS)是阿里云提供的海量、安全、低成本、高可靠的云存储服务。用户可以通过简单的API接口在任何时间、任何地点上传和下载数据,适用于图像、音视频、文档、网站等各种类型的数据存储和分发场景。

⭐阿里云OSS的优点

  • 高可靠性:OSS采用了多副本存储和容灾备份机制,确保数据的高可靠性和持久性。
  • 安全性:支持多种安全策略,如访问控制、加密传输等,保障数据的安全性。
  • 弹性扩展:支持按需存储和弹性扩展,用户可以根据实际需求灵活调整存储容量。
  • 低成本:OSS的存储费用低廉,且支持按量付费模式,使用户能够根据实际使用量付费

🏳️‍🌈为什么要使用云服务OSS

解决本地存储

无法直接访问,本地磁盘空间有限,本地磁盘损坏

这3个问题

🎄使用步骤

请添加图片描述

⭐OSS开通

(1)打开https://www.aliyun.com/ ,申请阿里云账号并完成实名认证。
在这里插入图片描述

开通OSS
登录阿里云官网。 点击右上角的控制台。
在这里插入图片描述

将鼠标移至产品,找到并单击对象存储OSS,打开OSS产品详情页面。在OSS产品详情
页中的单击立即开通。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开通服务后,在OSS产品详情页面单击管理控制台直接进入OSS管理控制台界面。您也
可以单击位于官网首页右上方菜单栏的控制台,进入阿里云管理控制台首页,然后单
击左侧的对象存储OSS菜单进入OSS管理控制台界面。
在这里插入图片描述
创建存储空间
新建Bucket,命名为 hmleadnews ,读写权限为

公共读

在这里插入图片描述

⭐参考官方SDK

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🍔编写代码

我把脚手架上传到网盘里面了,有需要的同学自取
我用夸克网盘分享了「tlias-web-management」,点击链接即可保存。
链接:https://pan.quark.cn/s/6171608c92b2

我们打开网盘里面的代码

🎈在pom文件中添加下面的代码

<!--阿里云OSS--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version></dependency>

🎈如果使用的是

Java 9及以上的版本

,则需要添加jaxb相关依赖。添加jaxb相关依赖示例代码如下:

<dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency><!-- no more than 2.3.3--><dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>2.3.3</version></dependency>

⭐上传文件

我们返回官方文档,找到上传文件
在这里插入图片描述

上传字符串
以下代码用于将字符串上传到目标存储空间examplebucket中exampledir目录下的exampleobject.txt文件。

importcom.aliyun.oss.ClientException;importcom.aliyun.oss.OSS;importcom.aliyun.oss.common.auth.*;importcom.aliyun.oss.OSSClientBuilder;importcom.aliyun.oss.OSSException;importcom.aliyun.oss.model.PutObjectRequest;importcom.aliyun.oss.model.PutObjectResult;importjava.io.ByteArrayInputStream;publicclassDemo{publicstaticvoidmain(String[] args)throwsException{// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。String endpoint ="https://oss-cn-hangzhou.aliyuncs.com";// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。EnvironmentVariableCredentialsProvider credentialsProvider =CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();// 填写Bucket名称,例如examplebucket。String bucketName ="examplebucket";// 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。String objectName ="exampledir/exampleobject.txt";// 创建OSSClient实例。OSS ossClient =newOSSClientBuilder().build(endpoint, credentialsProvider);try{// 填写字符串。String content ="Hello OSS,你好世界";// 创建PutObjectRequest对象。PutObjectRequest putObjectRequest =newPutObjectRequest(bucketName, objectName,newByteArrayInputStream(content.getBytes()));// 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。// ObjectMetadata metadata = new ObjectMetadata();// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());// metadata.setObjectAcl(CannedAccessControlList.Private);// putObjectRequest.setMetadata(metadata);// 上传字符串。PutObjectResult result = ossClient.putObject(putObjectRequest);}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();}}}}

把代码的相关内容修改为自己的
在这里插入图片描述

🌹综合案例

我们创建工具类包,导入阿里云工具类相关代码

packagecom.itheima.utils;importcom.aliyun.oss.OSS;importcom.aliyun.oss.OSSClientBuilder;importorg.springframework.web.multipart.MultipartFile;importjava.io.*;importjava.util.UUID;/**
 * 阿里云 OSS 工具类
 */publicclassAliOSSUtils{privateString endpoint ="https://oss-cn-hangzhou.aliyuncs.com";privateString accessKeyId ="LTAI4GCH1vX6DKqJWxd6nEuW";privateString accessKeySecret ="yBshYweHOpqDuhCArrVHwIiBKpyqSL";privateString bucketName ="web-tlias";/**
     * 实现上传图片到OSS
     */publicStringupload(MultipartFile file)throwsIOException{// 获取上传的文件的输入流InputStream inputStream = file.getInputStream();// 避免文件覆盖String originalFilename = file.getOriginalFilename();String fileName =UUID.randomUUID().toString()+ originalFilename.substring(originalFilename.lastIndexOf("."));//上传文件到 OSSOSS ossClient =newOSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        ossClient.putObject(bucketName, fileName, inputStream);//文件访问路径String url = endpoint.split("//")[0]+"//"+ bucketName +"."+ endpoint.split("//")[1]+"/"+ fileName;// 关闭ossClient
        ossClient.shutdown();return url;// 把上传到oss的路径返回}}

把代码的相关内容修改为自己的
在这里插入图片描述

在AliOSSUtils中加上@Component注解,交给ioc容器进行管理

在这里插入图片描述

编写UploadController类
在这里插入图片描述
写入下面的代码

packagecom.itheima.controller;importcom.itheima.pojo.Result;importcom.itheima.utils.AliOSSUtils;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RestController;importorg.springframework.web.multipart.MultipartFile;importjava.io.IOException;@Slf4j@RestControllerpublicclassUploadController{@AutowiredprivateAliOSSUtils aliOSSUtils;@PostMapping("/upload")publicResultupload(MultipartFile image)throwsIOException{
        log.info("文件上传,文件名{}",image.getOriginalFilename());//调用阿里云OSS工具类进行文件上传String url=aliOSSUtils.upload(image);
        log.info("文件上传完成,url:{}", url);returnResult.success(url);}}

完结,散花!

在这里插入图片描述


本文转载自: https://blog.csdn.net/m0_72853403/article/details/134611445
版权归原作者 在下小吉. 所有, 如有侵权,请联系我们删除。

“【SpringBoot篇】阿里云OSS—存储文件的利器”的评论:

还没有评论