提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、首先开通OSS服务
- 二、OSS的桶bucket的创建和密钥配置
- 1、创建桶bucket
- 2、密钥配置
- 三、在springboot中的配置
- 1、在pom文件中导入坐标
- 2、application.yml 配置
- 3、在config包中编写工具类
- 4、使用
- 总结
前言
在springboot项目中,有时候需要上传保存一些图片,并且能够直接访问阿里上的图片,这就可以使用阿里的OSS服务了,前提是需要在阿里官网中开通OSS服务,在这里介绍怎样在springboot项目中使用基本的OSS服务。
提示:以下是本篇文章正文内容,下面案例可供参考
一、首先开通OSS服务
在产品中搜索OSS并且开通服务
二、OSS的桶bucket的创建和密钥配置
1、创建桶bucket
2、密钥配置
创建AccessKey
记住这个id和secret
三、在springboot中的配置
1、在pom文件中导入坐标
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
2、application.yml 配置
代码如下(示例):
# 阿里配置
al:
oss: #存储
endpoint: oss-cn-guangzhou.aliyuncs.com # 域
accessKeyId: LTAIxxx # 秘钥KeyId
accessKeySecret: LTAIxxx # 秘钥KeySecret
bucketName: xxxx # 桶名
url: https://xxx(Bucket 域名) # 访问地址
在此处获取域和访问地址
3、在config包中编写工具类
代码如下(OssConfig):
//oss存储配置
@Configuration
@ConfigurationProperties("al.oss")
@Data
public class OssConfig {
//区域
private String endpoint;
//访问id
private String accessKeyId;
//访问秘钥
private String accessKeySecret;
//桶名称
private String bucketName;
//访问URL
private String url;
}
代码如下(OssTemplate):
//阿里存储工具类
@Component
public class OssTemplate {
@Autowired
private OssConfig ossConfig;
//文件上传
public String upload(String fileName, InputStream inputStream) {
// 创建OSSClient
OSS ossClient = new OSSClientBuilder().build(
ossConfig.getEndpoint(),
ossConfig.getAccessKeyId(),
ossConfig.getAccessKeySecret());
// 上传文件流
// <yourObjectName>表示上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如 images/2020/11/11/asdf.jpg。
String objectName = "images/" + new SimpleDateFormat("yyyy/MM/dd").format(new Date())
+ "/" + System.currentTimeMillis() + fileName.substring(fileName.lastIndexOf("."));
// meta设置请求头,解决访问图片地址直接下载
ObjectMetadata meta = new ObjectMetadata();
meta.setContentType(getContentType(fileName.substring(fileName.lastIndexOf("."))));
ossClient.putObject(ossConfig.getBucketName(), objectName, inputStream, meta);
// 关闭OSSClient。
ossClient.shutdown();
return ossConfig.getUrl() + "/" + objectName;
}
//获取文件类型
public String getContentType(String FilenameExtension) {
if (FilenameExtension.equalsIgnoreCase(".bmp")) {
return "image/bmp";
}
if (FilenameExtension.equalsIgnoreCase(".gif")) {
return "image/gif";
}
if (FilenameExtension.equalsIgnoreCase(".jpeg") ||
FilenameExtension.equalsIgnoreCase(".jpg") ||
FilenameExtension.equalsIgnoreCase(".png")) {
return "image/jpg";
}
return "image/jpg";
}
}
4、使用
@RestController
public class UploadController {
@Autowired
private OssTemplate ossTemplate;
/**
* 文件上传
* /admin/upload/image
* @param uploadImage
* @return
* @throws IOException
*/
@RequestMapping("/admin/upload/image")
// @ResponseBody
public String ImageUpload(MultipartFile uploadImage) throws IOException {
String upload = this.ossTemplate.upload(uploadImage.getOriginalFilename(), uploadImage.getInputStream());
return upload;
}
}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了OSS文件上传的的使用,而OSS还提供了大量能使我们快速便捷地处理数据的服务。
若要访问上传的图片,可以在对应的Bucket中,选择文件管理->文件列表,找到需要访问的图片,点击详情,会出现一个URL,复制直接在浏览器中访问即可