图片存储解决方案---阿里云OSS

实现图片上传服务,方案:

  1. 直接将图片保存到服务所在的硬盘

    1. 优点:开发便捷,成本低

    2. 缺点:扩容困难

  2. 使用分布式文件系统进行存储

    1. 优点:容易实现扩容

    2. 缺点:部署复杂、开发复杂度稍大(有成熟的产品可以使用,比如:FastDFS)

  3. 使用第三方的存储服务

    1. 优点:开发简单,拥有强大功能,免维护

    2. 缺点:付费

对象存储OSS_云存储服务_企业数据管理_存储-阿里云阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,提供12个9的数据持久性,99.995%的数据可用性和多种存储类型,适用于数据湖存储,数据迁移,企业数据管理,数据处理等多种场景,可对接多种计算分析平台,直接进行数据处理与分析,打破数据孤岛,优化存储成本,提升业务价值。https://www.aliyun.com/product/oss

1、导入依赖

com.aliyunaliyun-java-sdk-core4.0.6
com.aliyun.ossaliyun-sdk-oss3.10.2

 2、Propeties 属性类

@Data
@ConfigurationProperties(prefix = "oss")// 指定yml文件全路径,获取属性
public class OssProperties {private String accessKey;private String secret;private String bucketName;private String url;private String Endpoint;
}

3、定义模板类

public class OssTemplate {private OssProperties properties;public OssTemplate(OssProperties properties) {this.properties = properties;}/*** 文件上传到阿里云OSS* @param fileName 上传文件名* @param inputStream 文件输入流* @return 图片的访问地址*/public String upload(String fileName, InputStream inputStream) {// Endpoint以杭州为例,其它Region请按实际情况填写。String endpoint = properties.getEndpoint();// 阿里云主账号AccessKey拥有所有API的访问权限String accessKeyId = properties.getAccessKey();String accessKeySecret = properties.getSecret();// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//获取上传后缀名String sufix = fileName.substring(fileName.lastIndexOf("."));/*** 文件名称:*   images/2020/10/31/uuid(格式)* 拼接图片名称如下:*/String name = "images/"+new SimpleDateFormat("yyyy/MM/dd").format(new Date()) +"/"+ UUID.randomUUID().toString() + sufix;ossClient.putObject(properties.getBucketName(), name, inputStream);// 关闭OSSClient。ossClient.shutdown();return "https://" + properties.getUrl() + "/" + name;}}

4、自动配置类

@Configuration
// 自动的读取yml中配置信息,并赋值到OssProperties对象中,将此对象存入容器
@EnableConfigurationProperties({   OssProperties.class
})
public class TanhuaAutoConfiguration {@Beanpublic OssTemplate ossTemplate(OssProperties ossProperties) {return new OssTemplate(ossProperties);}
}

5、application.yml配置

# 阿里云oss上的信息
oss:accessKey: secret: bucketName: endpoint: url: 

测试:

/*** 测试文件上传*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class OssTest {@Autowiredprivate OssTemplate ossTemplate;@Testpublic void testSendMsg() throws FileNotFoundException {String file = "D:\\123.jpg";// 图片的路径String url = ossTemplate.upload(file, new FileInputStream(file));System.out.println("url = " + url);}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部