https://www.aliyun.com/
这里插入一个可以通过代码创建Bucket的测试类,如下:
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;public class OssTest {public static void main(String[] args) {String endpoint = "https://oss-cn-shanghai.aliyuncs.com";String accessKeyId = "LTAI5tRo9YESJJp2EjPscF1h";String accessKeySecret = "UhClPCgctvM0gZdcppsCc0vTMOVuKm";String bucketName = "sgg-yygh-syt-test";//创建OSSClient实例OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);//创建存储空间ossClient.createBucket(bucketName);//关闭OSSClientossClient.shutdown();}
}
以上均为控制台操作文件,下面展示通过代码操作
com.aliyun.oss aliyun-sdk-oss 3.15.1
joda-time joda-time 2.10.1
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery 2.2.0.RELEASE
# 服务端口
server.port=8205
# 服务名
spring.application.name=service-oss#返回json的全局时间格式.
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8# nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848aliyun.oss.endpoint=oss-cn-shanghai.aliyuncs.com
aliyun.oss.accessKeyId=LTAI5tRo9YESJJp2EjPscF1h
aliyun.oss.secret=UhClPCgctvM0gZdcppsCc0vTMOVuKm
aliyun.oss.bucket=sgg-yygh-syt
aliyun.oss.accessKeyId=LTAI5tRo9YESJJp2EjPscF1h
aliyun.oss.secret=UhClPCgctvM0gZdcppsCc0vTMOVuKm
aliyun.oss.endpoint=oss-cn-shanghai.aliyuncs.com
aliyun.oss.bucket=sgg-yygh-syt
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源自动配置
@EnableDiscoveryClient//开启nacos注册中心
@ComponentScan(basePackages = {"com.hospital"})//可以扫描到另一个模块的swagger
public class ServiceOssApplication {public static void main(String[] args) {SpringApplication.run(ServiceOssApplication.class, args);}
}
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class ConstantOssPropertiesUtils implements InitializingBean {@Value("${aliyun.oss.endpoint}")private String endpoint;@Value("${aliyun.oss.accessKeyId}")private String accessKeyId;@Value("${aliyun.oss.secret}")private String secret;@Value("${aliyun.oss.bucket}")private String bucket;public static String EDNPOINT;public static String ACCESS_KEY_ID;public static String SECRECT;public static String BUCKET;@Overridepublic void afterPropertiesSet() throws Exception {EDNPOINT=endpoint;ACCESS_KEY_ID=accessKeyId;SECRECT=secret;BUCKET=bucket;}
}
controller层:
import com.hospital.common.result.Result;
import com.hospital.oss.service.FileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;@RestController
@RequestMapping("/api/oss/file")
public class FileApiController {@Autowiredprivate FileService fileService;@PostMapping("/fileUpload")public Result fileUpload(MultipartFile file){//获取上传文件String url = fileService.uploadFile(file);return Result.ok(url);}
}
service层:
import org.springframework.web.multipart.MultipartFile;public interface FileService {//上传文件到阿里云ossString uploadFile(MultipartFile file);
}
serviceImpl层:
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.hospital.oss.service.FileService;
import com.hospital.oss.utils.ConstantOssPropertiesUtils;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;@Service
public class FileServiceImpl implements FileService {@Overridepublic String uploadFile(MultipartFile file) {//获取ConstantOssPropertiesUtils中的属性String endpoint = ConstantOssPropertiesUtils.EDNPOINT;String accessKeyId = ConstantOssPropertiesUtils.ACCESS_KEY_ID;String accessKeySecret = ConstantOssPropertiesUtils.SECRECT;String bucketName = ConstantOssPropertiesUtils.BUCKET;try {//创建OSSClient实例OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//上传文件流InputStream inputStream = file.getInputStream();String fileName = file.getOriginalFilename();//生成随机唯一值,使用uuid,添加到文件名称里面String uuid = UUID.randomUUID().toString().replaceAll("-","");fileName = uuid+fileName;//按照当前日期,创建文件夹,上传到创建文件夹里面//2021/02/02/01.jpgString timeUrl = new DateTime().toString("yyyy/MM/dd");fileName = timeUrl+"/"+fileName;//调用方法实现上传ossClient.putObject(bucketName, fileName, inputStream);//关闭OSSClient。ossClient.shutdown();//上传之后文件路径//https://yygh-atguigu.oss-cn-beijing.aliyuncs.com/01.jpgString url = "https://"+bucketName+"."+endpoint+"/"+fileName;//返回return url;} catch (IOException e) {e.printStackTrace();return null;}}
}
最后, 整合阿里云OSS对象存储服务成功!!!