时间:2021-05-20
前言
我们在项目中经常会使用到图片或者文档资源,一般来说如何这类文件比较少的时候我们可以直接存在在服务器中,但是如果一旦这些文件到达一定数量的时候如果在放在应用服务器必然会影响应用服务器的性能,并且有时候这些图片资源也要直接用在前端显示当中,所以放在应用服务器也是不妥的。一些比较大的互联网公司可能会使用一些分布式文件系统来达到存储文件的目的,但这种方式门槛过高。如何找到一个合适且性价比高的文件存储方式呢?那么不得不说的就是对象存储服务OSS.
FastDFS分布式文件系统可参考我的博客:FastDFS分布式文件系统
正文
对象存储服务
对象存储服务(OSS):是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件:
简单地来说,我们通过OSS可以避免在服务器中存储大量的文件、图片等资源增加服务器的IO的读写带宽。
SpringBoot使用阿里OSS实现文件云存储 前期准备
第一步:在阿里云商城购买对象存储服务
第二步:在阿里云控制台配置AccessKey
代码部分
maven依赖
<!--oss对象关系存储--><dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.5.0</version></dependency><!--apache comment tools--><dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version></dependency><!--提供文件上传下载--><dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version></dependency>application.properties:配置类
##basic settingserver.port = 8080server.address =127.0.0.1# 解除文件大小限制spring.servlet.multipart.max-file-size=10MBspring.servlet.multipart.max-request-size=10MBOssManagerUtil.java:阿里OSS工具类
/** * 阿里Oss对象存储工具类 */public class OssManagerUtil { private static String endpoint = “oss中获取的oss公网路径"; private static String accessKeyId = “自己在阿里云申请的accessKeyId"; private static String accessKeySecret = "自己在阿里云申请的accessKeySecret"; private static String bucket = "bucket名称"; private static OSS client; static { client = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); } /** * 上传图片 * * @param fileName 图片名称,图片名称包括文件夹名称和“/” * @param length 图片大小 * @param content 输入流 */ public static String uploadImage(String fileName, long length, InputStream content) { uploadBucketImage(bucket, fileName, length, content); return "https://" + bucket + "." + endpoint + "/" + fileName; } /** * 上传文件 * * @param bucket 存储空间名 * @param fileName 文件名(包括文件夹名称和“/”) * @param length 流的长度 * @param content 输入流 */ public static void uploadBucketImage(String bucket, String fileName, long length, InputStream content) { // 创建上传Object的Metadata ObjectMetadata meta = new ObjectMetadata(); // 必须设置ContentLength meta.setContentLength(length); // 上传Object. client.putObject(bucket, fileName, content, meta); } /** * 删除文件 * * @param fileName 文件名称,图片名称包括文件夹名称和“/” */ public static boolean delShopImage(String fileName) { //判断文件是否存在 boolean exist = client.doesObjectExist(bucket, fileName); //文件不存在删除失败 if (!exist) { return false; } //执行删除 client.deleteObject(bucket, fileName); return true; } /** * 获得上传文件后url链接 * * @param fileName 文件名(包括文件夹名称和“/”) * @return */ public static String getUrl(String fileName) { // 设置URL过期时间为10年 3600l* 1000*24*365*10 Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 10); // 生成URL URL url = client.generatePresignedUrl(bucket, fileName, expiration); if (url != null) { return url.toString(); } return null; } /** * 创建存储空间 * * @param bucketName 新建存储空间默认为标准存储类型,私有权限。 * @return */ public static void crateBucket(String bucketName) { // 新建存储空间默认为标准存储类型,私有权限。 client.createBucket(bucketName); }}验证
测试接口:文件上传
/** * 文件上传到阿里oss */@PostMapping("/uploadFiletoOss")@ApiOperation(value = "文件上传到阿里oss")public ResponseResult uploadFiletoOss(@RequestParam("file")MultipartFile file)throws IOException{ String fileName = file.getOriginalFilename(); String suffix = fileName.substring(fileName.lastIndexOf(".") + 1); fileName = UUID.randomUUID().toString().replace("-", "") + "." + suffix; String url = OssManagerUtil.uploadImage(fileName,file.getInputStream().available(),file.getInputStream()); return ResponseResult.success(url);}访问测试接口:
打开接口返回的OSS在线文件URL,得到在线文件:
源码
项目源码可从的我的github中获取:github源码地址
到此这篇关于SpringBoot使用阿里OSS实现文件云存储的文章就介绍到这了,更多相关SpringBoot文件云存储内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
今天来整合一下SpringBoot和阿里云OSS对象存储服务。一、配置OSS服务先在阿里云开通对象存储服务,拿到AccessKeyId、AccessKeySec
网站一般都会有上传功能,而对象存储服务oss是一个很好的选择。可以快速的搭建起自己的上传文件功能。该文章以使用阿里云的OSS功能为例,记录如何在客户端使用阿里云
如何在VueJS使用阿里云存储上传图片?什么是OSS呢?其实按照官网的解释就是->>阿里云对象存储服务(ObjectStorageService)在实际开发中,
本文实例讲述了java实现上传文件到oss(阿里云)功能。分享给大家供大家参考,具体如下:做这个功能之前我们需要导入阿里云OSS官方提供的工具包aliyun-s
简介阿里云OSS是阿里云提供的海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%的数据可靠性(号称)。能够使用RESTfulAPI可以在互