阿里云oss
一.准备工作
1. 开通oss控制台
2.开通oss之后
(1)选择Bucket列表
(2)新建Bucket
3.设置Bucket的选项
这样oss开通成功,并且创建了 一个Bucket
4.最后我们还需要AccessId 和 AccessKey进行授权
如果没有,就选择创建AccessKey
它会验证你的账户信息,验证完成后显示创建成功
实在要是记不住就 点击保存AK信息,它会下载csv格式的文件在你的本地,用wps打开查看
三.编辑代码前准备
1.新建一个maven项目(这里我就不演示了)
2.导入依赖 这里我们是springboot项目 需要导入springboot依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
</parent>
<dependencies>
<!--spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--阿里云oss-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.8.0</version>
</dependency>
<!--swagger 用来测试-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!--lombok用来简化实体类:需要安装lombok插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
</dependencies>
3. 新建application.properties配置文件
#端口号
server.port=8080
#阿里云 OSS配置
#AccessId 和 AccessKey
aliyun.oss.file.keyid=
aliyun.oss.file.keysecret=
#创建的Bucket
aliyun.oss.file.bucketname=
aliyun.oss.file.endpoint=
bucket信息在下图所示位置
下图是accesskey信息
4.然后我新建了几个包 结构如下:
6.编写启动类 Application
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@ComponentScan(basePackages = "com.haiyang.upload")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
四. 代码实现
1.首先创建工具类来读取配置文件里的参数
注意 ,这里我用工具类继承了InitializingBean接口
它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。
@Component
public class OssProperies implements InitializingBean {
@Value("${aliyun.oss.file.endpoint}")
private String endpoint;
@Value("${aliyun.oss.file.keyid}")
private String keyId;
@Value("${aliyun.oss.file.keysecret}")
private String keysecret;
@Value("${aliyun.oss.file.bucketname}")
private String bucketname;
public static String END_POINT;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String BUCKET_NAME;
@Override
public void afterPropertiesSet() throws Exception {
END_POINT = endpoint;
ACCESS_KEY_ID = keyId;
ACCESS_KEY_SECRET = keysecret;
BUCKET_NAME = bucketname;
}
}
2. 编写controller接口
@RestController
@RequestMapping("/upload")
public class OssController {
@Autowired
OssService ossServiceImpl;
@PostMapping("/uploadimg")
public String uploadOssFile(MultipartFile file) throws Exception{
String url = ossServiceImpl.uploadFile(file);
return url;
}
}
3.service接口层
public interface OssService {
String uploadFile (MultipartFile file) throws Exception;
}
4.service实现层
@Override
public String uploadFile(MultipartFile file) throws Exception {
//读取工具类的数据
String endpoint = OssProperies.END_POINT;
String accessKeyId = OssProperies.ACCESS_KEY_ID;
String accessKeySecret = OssProperies.ACCESS_KEY_SECRET;
String bucketName = OssProperies.BUCKET_NAME;
//连接oss客户端
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流
InputStream inputStream = file.getInputStream();
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);
//自己看情况
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
//根据时间拼接url
String url = year+"/"+month+"-"+date+"/"+file.getOriginalFilename();
//上传
ossClient.putObject(bucketName, url, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
return "https://"+bucketName+"."+endpoint+"/"+url;
}
5. 编写swagger配置方便测试
@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("upload")
.apiInfo(OssApi())
.select()
.build();
}
private ApiInfo OssApi(){
return new ApiInfoBuilder()
.title("oss实例")
.description("阿里云oss")
.version("1.0")
.contact(new Contact("haiyang", "http://taixianzhilian.com", "491680922@qq.com"))
.build();
}
五. swagger测试
路径成功返回了,最后我们再看一下oss的服务器
成功上传
六. 总结
本人第一次写博客,有很多不足的地方,甚至文章错别字都有,欢迎指出。
至于为什么写这么一篇博客,是因为跟着b站的老师做完了谷粒学院项目,想写博客总结一下他的知识点。
为了减少代码量,这个oss的服务完全可以用一个文件工具类写完,后面我会补上。