xmtrock
发布于 2021-06-10 / 205 阅读
0

阿里云OSS

https://help.aliyun.com/document_detail/32008.html?spm=5176.208357.1107607.21.1d7a390fDBZD0s
阿里云OSS、javasdk

1、依赖

<!-- 阿里云oss依赖 -->
<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<!-- 日期工具栏依赖 -->
<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
</dependency>

2、设置AccessKey和Serect

# 阿里云
aliyun.oss.regionId=default
aliyun.oss.accessKeyId=LTAI***********cZtWanfAY7
aliyun.oss.accessKeySecret=gxPRkZg*************eD4LBM
aliyun.oss.endpoint=oss-cn-guangzhou.aliyuncs.com
aliyun.oss.bucketName=yygh-soulike

3、设置网关

#设置路由id
spring.cloud.gateway.routes[4].id=service-oss
#设置路由的uri
spring.cloud.gateway.routes[4].uri=lb://service-oss
#设置路由断言,代理servicerId为auth-service的/auth/路径
spring.cloud.gateway.routes[4].predicates= Path=/*/oss/**

先测试:

@SpringBootTest(classes = ServiceOssApplication.class)
@Data
public class OssTest {
    // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
    @Value("${aliyun.oss.accessKeyId}")
    private String accessKeyId;
    @Value("${aliyun.oss.secret}")
    private String accessKeySecret;
    @Value("${aliyun.oss.bucketName}")
    private String bucketName;
    @Value("${aliyun.oss.endpoint}")
    private String endpoint;

    @Test
    public void create() {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 创建存储空间。
        ossClient.createBucket("bucketName");
        // 关闭OSSClient。
        ossClient.shutdown();
    }
}

4、上传文件

属性获得:

@Component
public class OssPropertiesUtils implements InitializingBean {
    // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
    @Value("${aliyun.oss.accessKeyId}")
    private String accessKeyId;
    @Value("${aliyun.oss.accessKeySecret}")
    private String accessKeySecret;
    @Value("${aliyun.oss.endpoint}")
    private String endpoint;
    @Value("${aliyun.oss.regionId}")
    private String regionId;
    @Value("${aliyun.oss.bucketName}")
    private String bucketName;

    public static String REGION_Id;
    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;
    public static String ENDPOINT;
    public static String BUCKET_NAME;

    @Override
    public void afterPropertiesSet() throws Exception {
        REGION_Id = regionId;
        ACCESS_KEY_ID = accessKeyId;
        ACCESS_KEY_SECRET = accessKeySecret;
        ENDPOINT = endpoint;
        BUCKET_NAME = bucketName;
    }
}

MVC:

@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) {

        //加上随机值,注意不要有横杠
        String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "_" + file.getOriginalFilename();
        //日期目录结构,用斜杠方式更好免得搞出365个文件
        fileName = new DateTime().toString("yyyy/MM/dd") + "/" + fileName;

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(OssPropertiesUtils.ENDPOINT, OssPropertiesUtils.ACCESS_KEY_ID, OssPropertiesUtils.ACCESS_KEY_SECRET);

        try {
            // 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。
            ossClient.putObject(OssPropertiesUtils.BUCKET_NAME, fileName, file.getInputStream());
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }

        // 关闭OSSClient。
        ossClient.shutdown();

        //拿到上传文件的路径【注意文件名的拼接形式】
        String url = "https://" + OssPropertiesUtils.BUCKET_NAME + "." + OssPropertiesUtils.ENDPOINT + "/" + fileName;
        https://yygh-soulike.oss-cn-guangzhou.aliyuncs.com/2021/06/10/10fb1269944c4a009340a862b9b1b2fc_邮箱授权码.txt
        return url;
    }
}

20210610164223465