黑马程序员JavaWeb开发教程
文章目录
一、基本介绍
1.第三方服务-通用思路
2. 阿里云OSS-使用步骤
二、阿里云OSS使用步骤
1. 注册阿里云(实名认证)
-
百度输入 阿里云,点击进入阿里云官网
-
注册
-
使用手机号注册即可
2. 开通对象存储服务(OSS)
-
点击控制台
-
点击左上角
-
点击对象存储OSS
-
开通服务
3. 创建bucket
-
点击bucket列表
-
点击创建bucket
-
创建时需要修改的信息
-
Bucket名称 自己写一个即可
-
读写权限-选择公共读
4. 获取AccessKey(密钥)
-
将鼠标移动到主账号头像上,点击 AccessKey 管理
-
继续使用AccessKey
-
创建AccessKey
-
选择一个验证方式
5. 参照官方SDK编写入门程序
5.1 下载SDK
- 打开官方文档( 在对象存储OSS界面拉到最下方有一个SDK下载,先点击,再点击SDK实例,之后点击在文档中心打开)
2. SDK参考 - java - 安装
3. 选择在Maven项目中加入依赖项的方式,按照文档说明将依赖copy到对应的文件中
5.2 编写入门案例
-
java - 对象/文件 - 上传文件 - 简单上传 - 上传文件流 -复制相关代码
-
修改相关代码的参数为自己的参数
-
运行main,之后可以看到文件已经被上传到阿里云OSS
6. 案例集成OSS
6.1 思路
6.2 步骤
6.2.1 引入阿里云OSS上传文件工具类
package com.itheima.mytlias.utils;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.UUID;
/**
* 阿里云 OSS 工具类
*/
public class AliOSSUtils {
private String endpoint = "https://oss-cn-beijing.aliyuncs.com";//自己创建的bucket的区域
private String accessKeyId = "";//自己的 accessKeyId
private String accessKeySecret = "";//自己的 accessKeySecret
private String bucketName = "";//自己创建的bucket的名称
/**
* 实现上传图片到OSS
*/
public String upload(MultipartFile file) throws IOException {
// 获取上传的文件的输入流
InputStream inputStream = file.getInputStream();
// 避免文件覆盖
String originalFilename = file.getOriginalFilename();
String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
//上传文件到 OSS
OSS ossClient = new OSSClientBuilder().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的路径返回
}
}
6.2.2 上传图片接口开发
- UploadController.java 中的代码
package com.itheima.mytlias.controller;
import com.itheima.mytlias.pojo.Result;
import com.itheima.mytlias.utils.AliOSSUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@RestController
@Slf4j
public class UploadController {
@Autowired
AliOSSUtils aliOSSUtils;//在工具类上加上注解 @Component
@PostMapping("/upload")
public Result upload(MultipartFile image) throws IOException {
//打印日志
log.info("文件上传,文件名:{}", image.getOriginalFilename());
//调用阿里云工具类进行文件上传
String url = aliOSSUtils.upload(image);
//返回结果
return Result.success(url);
}
}
- 使用 postman 测试接口