1. 开通“对象存储OSS”服务
(1)申请阿里云账号
(2)实名认证
(3)开通“对象存储OSS”服务
(4)进入管理控制台
2. 创建Bucket
在管理控制台中,新建Bucket,选择标准存储、公共读、不开通
3. 搭建service-oss模块
(1)修改pom.xml,引入阿里云oss依赖
<!-- 阿里云oss依赖 --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency>
(2)添加配置文件application.properties
# 服务端口 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:8848 aliyun.oss.endpoint=oss-cn-hangzhou.aliyuncs.com aliyun.oss.accessKeyId=xx aliyun.oss.secret=xx aliyun.oss.bucket=lewang-yygh
(3)配置网关
#设置路由id spring.cloud.gateway.routes[5].id=service-oss #设置路由的uri spring.cloud.gateway.routes[5].uri=lb://service-oss #设置路由断言,代理servicerId为auth-service的/auth/路径 spring.cloud.gateway.routes[5].predicates= Path=/*/oss/**
(4)创建controller和实现类
@RestController @RequestMapping("/api/oss/file") public class FileApiController { @Autowired private FileService fileService; //上传文件到阿里云oss @PostMapping("fileUpload") public Result fileUpload(MultipartFile file) { String url = fileService.upload(file); return Result.ok(url); } }
@Service public class FileServiceImpl implements FileService { @Override public String upload(MultipartFile file) { // Endpoint以杭州为例,其它Region请按实际情况填写。 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 = null; inputStream = file.getInputStream(); String fileName = file.getOriginalFilename(); //生成随机唯一值,使用uuid,添加到文件名称里面 String uuid = UUID.randomUUID().toString().replaceAll("-",""); fileName = uuid+fileName; //按照当前日期,创建文件夹,上传到创建文件夹里面 // 2021/02/02/01.jpg String timeUrl = new DateTime().toString("yyyy/MM/dd"); fileName = timeUrl+"/"+fileName; ossClient.putObject(bucketName,fileName,inputStream); // 关闭OSSClient。 ossClient.shutdown(); //上传之后文件路径 // https://lewang-yygh.oss-cn-hangzhou.aliyuncs.com/01.jpg String url = "https://"+bucketName+"."+endpoint+"/"+fileName;//返回 return url; } catch (IOException e) { e.printStackTrace(); return null; } } }
标签:集成,file,String,spring,oss,fileName,阿里,aliyun From: https://www.cnblogs.com/homle/p/17023430.html