点击:阿里云官网云
点击:oss控制台
如果没有,就选择创建AccessKey
它会验证你的账户信息,验证完成后显示创建成功
实在要是记不住就 点击保存AK信息,它会下载csv格式的文件在你的本地,用wps打开查看
org.springframework.boot
spring-boot-starter-parent
2.2.1.RELEASE
org.springframework.boot
spring-boot-starter-web
com.aliyun.oss
aliyun-sdk-oss
3.8.0
io.springfox
springfox-swagger2
2.7.0
io.springfox
springfox-swagger-ui
2.7.0
org.projectlombok
lombok
1.18.8
#端口号
server.port=8080
#阿里云 OSS配置
#AccessId 和 AccessKey
aliyun.oss.file.keyid=
aliyun.oss.file.keysecret=
#创建的Bucket
aliyun.oss.file.bucketname=
aliyun.oss.file.endpoint=
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@ComponentScan(basePackages = "com.haiyang.upload")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
注意 ,这里我用工具类继承了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;
}
}
@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;
}
}
public interface OssService {
String uploadFile (MultipartFile file) throws Exception;
}
@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;
}
@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", "[email protected]"))
.build();
}
成功上传
本人第一次写博客,有很多不足的地方,甚至文章错别字都有,欢迎指出。
至于为什么写这么一篇博客,是因为跟着b站的老师做完了谷粒学院项目,想写博客总结一下他的知识点。
为了减少代码量,这个oss的服务完全可以用一个文件工具类写完,后面我会补上。