图片存储解决方案---阿里云OSS
实现图片上传服务,方案:
-
直接将图片保存到服务所在的硬盘
-
优点:开发便捷,成本低
-
缺点:扩容困难
-
-
使用分布式文件系统进行存储
-
优点:容易实现扩容
-
缺点:部署复杂、开发复杂度稍大(有成熟的产品可以使用,比如:FastDFS)
-
-
使用第三方的存储服务
-
优点:开发简单,拥有强大功能,免维护
-
缺点:付费
-
对象存储OSS_云存储服务_企业数据管理_存储-阿里云阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,提供12个9的数据持久性,99.995%的数据可用性和多种存储类型,适用于数据湖存储,数据迁移,企业数据管理,数据处理等多种场景,可对接多种计算分析平台,直接进行数据处理与分析,打破数据孤岛,优化存储成本,提升业务价值。https://www.aliyun.com/product/oss
1、导入依赖
com.aliyun aliyun-java-sdk-core 4.0.6
com.aliyun.oss aliyun-sdk-oss 3.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);}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
