对象存储 OSS

大家好 , 我是苏麟 , 今天聊聊OSS . 

这里使用阿里云的OSS对象存储.

首先大家得有一个阿里云账号 , 注册大家都会 这里不多介绍 .

阿里云官网 : 阿里云登录页 (aliyun.com)

对象存储 OSS_第1张图片

首页产品目录下存储集合里对象存储OSS

对象存储 OSS_第2张图片

进入对象存储OSS页面

对象存储 OSS_第3张图片

点击管理控制台(新用户应该有免费试用期的)

对象存储 OSS_第4张图片

进入Bucket列表点击创建Bucket填写信息(主要填写名称其他基本不用改)

对象存储 OSS_第5张图片

 endpoint 是网址在地域和存储之间

点击图像下的AccessKey管理

对象存储 OSS_第6张图片

AccessKey ID就是 accesskey , accessKeysecret 点击查看secret 获取

对象存储 OSS_第7张图片

在IDEA中使用

spring:
  servlet:
    multipart:
      #配置单个上传文件的最大值 multiPartFile
      max-file-size: 10MB
      #配置总上传文件的最大值 multiPartFile
      max-request-size: 100MB


#阿里云OSS配置
aliyun:
  oss:
    endpoint: https://oss-cn-hangzhou.aliyuncs.com
    accessKeyId: 
    accessKeySecret: 
    bucketName: 
/**
 * ConfigurationProperties 自动注入
 */
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {
    private String endpoint;
    private String accessKeyId;
    private String accessKeySecret;
    private String bucketName;
}
/**
 * 阿里云 OSS 工具类
 */

@Component
public class AliOSSUtils {

//    @Value("${aliyun.oss.endpoint}")
//    private String endpoint;
//
//    @Value("${aliyun.oss.accessKeyId}")
//    private String accessKeyId;
//
//    @Value("${aliyun.oss.accessKeySecret}")
//    private String accessKeySecret;
//
//    @Value("${aliyun.oss.bucketName}")
//    private String bucketName;


    @Autowired
    private AliOSSProperties aliOSSProperties;

    /**
     * 实现上传图片到OSS
     */
    public String upload(MultipartFile file) throws IOException {
        //获取OSS
        String accessKeyId = aliOSSProperties.getAccessKeyId();
        String endpoint = aliOSSProperties.getEndpoint();
        String bucketName = aliOSSProperties.getBucketName();
        String accessKeySecret = aliOSSProperties.getAccessKeySecret();


        // 获取上传的文件的输入流
        InputStream inputStream = file.getInputStream();

        // 避免文件覆盖
        String originalFilename = file.getOriginalFilename();
        String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));

        //上传文件到 OSS
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        ossClient.putObject(bucketName, fileName, inputStream);

        //文件访问路径
        String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
        // 关闭ossClient
        ossClient.shutdown();
        return url;// 把上传到oss的路径返回
    }

}

调用

    /**
     * 上传到云端
     *
     * @param image
     * @return
     * @throws IOException
     */
    @PostMapping("/upload")
    public Result upload(MultipartFile image) throws IOException {
        log.info("文件上传 : {}", image.getOriginalFilename());

        //调用阿里的上传
        String url = aliOSSUtils.upload(image);
        log.info("文件上传完成,返回的url : {}", url);

        return Result.success(url);
    }

这期就到这里下期见!

你可能感兴趣的:(java项目中高效开发,java)