1、开通阿里云OSS
1.1进入阿里云官网,点击【产品】,选择【阿里云OSS】
1.2来到阿里云OSS页面
1.3成功开通阿里云OSS
2、使用阿里云OSS
2.1开通完成之后,来到【OSS管理控制台】
2.2创建Bucket【存储空间】
2.2.1填入相关信息
2.2.2存储空间创建好了
2.3上传文件测试一下
上传成功
找到文件管理,预览一下刚才上传的照片
OK 手动上传文件成功!
3、博客项目整合阿里云OSS
3.1找到OSS的开发文档
3.2博客项目引入OSS依赖
复制依赖,粘贴到博客项目的pom文件中
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
3.3编写OSS文件上传工具类
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 填写Bucket名称,例如examplebucket。
String bucketName = "examplebucket";
// 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
String objectName = "exampledir/exampleobject.txt";
// 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。
// 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
String filePath= "D:\\localpath\\examplefile.txt";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
InputStream inputStream = new FileInputStream(filePath);
// 创建PutObject请求。
ossClient.putObject(bucketName, objectName, inputStream);
} 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();
}
}
}
3.4其中需要的OSS参数有如下
点击右上角头像有个AccessKey管理
选择子用户AccessKey管理
进入管理页面
创建一个博客系统的子用户AccessKey
点击确定 有个安全验证
用手机验证码验证一下就行
创建成功
给子账户只赋予OSS的读写权限
3.5设置跨域规则
4、编写OSS文件上传工具类
参考SDK开发文档快速入门
备注:阿里云账号AccessKey相关内容已经封装
public class OssUtil {
public static String uploadOSS(MultipartFile multipartFile) {
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = OssParam.ENDPOINT;
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = OssParam.ACCESS_KEY_ID;
String accessKeySecret = OssParam.ACCESS_KEY_SECRET;
// 填写Bucket名称
String bucketName = OssParam.BUCKET_NAME;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 获取文件上传的流
InputStream inputStream = multipartFile.getInputStream();
// 获取文件名称
String originalFilename = multipartFile.getOriginalFilename();
// 文件后缀
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
// 新文件名称
String newFileName = UUID.randomUUID().toString() + suffix;
// 文件上传到阿里云OSS服务器
ossClient.putObject(bucketName, newFileName, inputStream);
// 返回阿里云文件保存路径
return "https://" + bucketName + "." + endpoint + "/" + newFileName;
} catch (Exception e) {
e.printStackTrace();
return "文件上传失败";
} finally {
// 关闭 ossClient
ossClient.shutdown();
}
}
}
5、测试文件上传功能
@RestController
@RequestMapping("/blog")
public class BlogController {
//获取日志记录器对象
private final Logger logger = Logger.getLogger(BlogController.class);
/**
* 文件上传
* @param file
* @return
*/
@GetMapping("/fileUpload")
public String fileUpload(@RequestParam("file") MultipartFile file) {
logger.info("文件上传");
return OssUtil.uploadOSS(file);
}
}
ApiPost测试文件上传
可以成功上传,并返回文件地址
https://yangcunle-blog.oss-cn-hangzhou.aliyuncs.com/161c0548-f1d3-4346-9a5c-31d720ce6835.png
图片可以正常下载了 O(∩_∩)O哈哈~