快捷餐饮之店家后台OSS文件管理实现

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 快捷餐饮之店家后台OSS文件管理实现


一、关于阿里云对象存储OSS


阿里云对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%(12个9),服务可用性(或业务连续性)不低于99.995%。


OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。


您可以使用阿里云提供的API、SDK接口或者OSS迁移工具轻松地将海量数据移入或移出阿里云OSS。数据存储到阿里云OSS以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)、归档存储(Archive)、冷归档存储(Cold Archive)作为不经常访问数据的存储方式。


二,快速入门


访问链接:点击这里哦!


三,图形化使用OSS


登入你的阿里云,并开通OSS存储服务


3.1 进入你的OSS


image.png


3.2 点击Bucket列表


image.png

image.png


3.3 创建成功


image.png


3.4 上传文件


image.png


image.png


四、使用RAM子用户代码访问


image.png


image.png


image.png


每个人的都不一样


用户登录名称 quick-dine-oss-files@1036300182841973.onaliyun.com
AccessKey ID LTAI4GDe9cNNSW1CyzSaDKEr
AccessKey Secret FNnU1YTfzaE72CFTTwBK7bcwrHl84U


五、OSS文件管理实现


这里先不做服务拆分,因为先实现功能后做项目优化,而且我这是一个小的课设,能省那些高大上的东西就省略掉,但功能实现绝对是不会次的


5.1 配置文件自定义属性值

每个人的值都不一样,按对呀的名称填入哦!


aliyun:
  oss:
    endpoint: oss-cn-beijing.aliyuncs.com
    keyid: LTAI4GFkxZbNBJS98q8AoLyC
    keysecret: RPPjRwQ42KlpGpsGHHf8EYMVnl6t2R
    #bucket可以在控制台创建,也可以使用java代码创建,注意先测试bucket是否已被占用
    bucketname: quick-dine-oss-file


创建对应的属性类,进行映射

类名:OssProperties


/**
 * @Package: cn.liuliang.quickdinesysstore.utils
 * @Author: liuliang
 * @CreateTime: 2020/10/26 - 9:09
 * @Description:
 */
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class OssProperties {
    private String endpoint;
    private String keyid;
    private String keysecret;
    private String bucketname;
}


image.png


5.2 创建控制器

名称:OSSFileController


/**
 * @Package: cn.liuliang.quickdinesysstore.controller
 * @Author: liuliang
 * @CreateTime: 2020/10/26 - 9:11
 * @Description:
 */
@Api(value = "OSS文件上传管理", tags = "OSS文件上传管理")
@RestController
@RequestMapping("/oss/file")
public class OSSFileController {
    @Autowired
    private OSSFileService ossFileService;
    @ApiOperation("文件上传")
    @PostMapping("/upload")
    public ResultDTO upload(
        @ApiParam(value = "文件对象", required = true) @RequestParam("file") MultipartFile file,
        @ApiParam(value = "文件上传的模块名称(目录名称)", required = true) @RequestParam("module") String module) {
        String uploadUrl = "";
        InputStream inputStream = null;
        try {
            inputStream = file.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        uploadUrl = ossFileService.upload(inputStream, module, file.getOriginalFilename());
        return ResultDTO.success().message("上传成功!").data("url", uploadUrl);
    }
    @ApiOperation("文件删除")
    @GetMapping("/remove")
    public ResultDTO removeFile(
        @ApiParam(value = "要删除的文件路径", required = true) @RequestParam String url) {
        ossFileService.removeFile(url);
        return ResultDTO.success().message("文件刪除成功");
    }
}


5.3 创建业务层

类名:OSSFileService,OSSFileServiceImpl


/**
 * @Package: cn.liuliang.quickdinesysstore.service
 * @Author: liuliang
 * @CreateTime: 2020/10/26 - 9:27
 * @Description: 文件上传业务接口
 */
public interface OSSFileService {
    /**
     * 文件上传
     * @param inputStream       文件输入流
     * @param module            文件要存储的目录名称
     * @param originalFilename  文件名称
     * @return
     */
    String upload(InputStream inputStream, String module, String originalFilename);
    /**
     * 文件删除
     * @param url   要删除的文件访问地址
     */
    void removeFile(String url);
}
/**
 * @Package: cn.liuliang.quickdinesysstore.service.impl
 * @Author: liuliang
 * @CreateTime: 2020/10/26 - 9:28
 * @Description: 文件上传业务接口实现类
 */
@Service
public class OSSFileServiceImpl implements OSSFileService {
    @Autowired
    private OssProperties ossProperties;
    @Override
    public String upload(InputStream inputStream, String module, String originalFilename) {
        //获取oss服务器相关属性值
        String endpoint = ossProperties.getEndpoint();
        String keyid = ossProperties.getKeyid();
        String keysecret = ossProperties.getKeysecret();
        String bucketname = ossProperties.getBucketname();
        //判断oss实例是否存在:如果不存在则创建,如果存在则获取
        OSS ossClient = new OSSClientBuilder().build(endpoint, keyid, keysecret);
        if (!ossClient.doesBucketExist(bucketname)) {
            //创建bucket
            ossClient.createBucket(bucketname);
            //设置oss实例的访问权限:公共读
            ossClient.setBucketAcl(bucketname, CannedAccessControlList.PublicRead);
        }
        //构建文件路径
        //构建日期路径:avatar/2019/02/26/文件名
        String folder = new DateTime().toString("yyyy/MM/dd");
        //文件名:uuid.扩展名
        String fileName = UUID.randomUUID().toString();
        String fileExtension = originalFilename.substring(originalFilename.lastIndexOf("."));
        String key = module + "/" + folder + "/" + fileName + fileExtension;
        //文件上传至阿里云
        ossClient.putObject(bucketname, key, inputStream);
        // 关闭OSSClient。
        ossClient.shutdown();
        //返回url地址
        return "https://" + bucketname + "." + endpoint + "/" + key;
    }
    @Override
    public void removeFile(String url) {
        //获取oss服务器相关属性值
        String endpoint = ossProperties.getEndpoint();
        String keyid = ossProperties.getKeyid();
        String keysecret = ossProperties.getKeysecret();
        String bucketname = ossProperties.getBucketname();
        //创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, keyid, keysecret);
        String host = "https://" + bucketname + "." + endpoint + "/";
        String objectName = url.substring(host.length());
        // 删除文件。
        ossClient.deleteObject(bucketname, objectName);
        // 关闭OSSClient。
        ossClient.shutdown();
    }
}


5.4 包结构

微信图片_20220425144911.png


5.5 测试

5.5.1 上传


微信图片_20220425144946.png


image.png


5.5.2 删除


image.png


image.png


登录阿里云看看效果:


image.png


结束语


  • 由于博主才疏学浅,难免会有纰漏,假如你发现了错误或偏见的地方,还望留言给我指出来,我会对其加以修正。
  • 如果你觉得文章还不错,你的转发、分享、点赞、留言就是对我最大的鼓励。
  • 感谢您的阅读,十分欢迎并感谢您的关注。


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
Java 对象存储
|
存储 Java 测试技术
后台管理系统引入OSS实现图片上传功能
后台管理系统引入OSS实现图片上传功能
409 0
|
机器学习/深度学习 SQL 分布式计算
如何将模型更新到 OSS 实现离线更新|学习笔记
快速学习如何将模型更新到 OSS 实现离线更新。
193 0
如何将模型更新到 OSS 实现离线更新|学习笔记
|
SQL 存储 Cloud Native
CDN转存离线日志到OSS,实现更长时间的日志存储
CDN转存离线日志到OSS,实现更长时间的日志存储
548 1
CDN转存离线日志到OSS,实现更长时间的日志存储
|
存储 安全 Java
SpringBoot2.x系列教程24--SpringBoot实现文件上传到OSS阿里云存储
前言 在上一章节中,壹哥 给大家讲解了如何在SpringBoot实现单个文件和多个文件上传,但是那种方式现在挺多项目中都不再采用了,而是会把文件上传到云存储服务器中,比如阿里云、腾讯云、华为云等。所以今天 壹哥 利用阿里云的OSS存储,讲解如何把本地文件存储到云存储服务器中,本文会教给你如何购买配置阿里云OSS,并且教你如何实现文件上传到云空间,干货满满哦。 一. 阿里云OSS简介 1. 存储服务简介 我们进行项目开发,很多时候都需要进行文件、图片等的上传,对于很多项目来说,虽然有FastDFS等文件存储服务器技术,但其实我们完全没有必要搭建自己的图片等文件服务器。对一个小型非专业的应用来说,
1487 0
|
消息中间件 JavaScript 数据挖掘
|
监控 关系型数据库 Serverless
基于Serverless+OSS分分钟实现图片秒变素描
在阿里云Serverless函数计算服务中部署普通图片转素描图函数服务,实现将批量上传到指定OSS桶内的图片自动转换为素描图并保存到另一个OSS桶内
基于Serverless+OSS分分钟实现图片秒变素描
|
弹性计算 对象存储 网络虚拟化
CEN+私网NAT实现跨地域访问OSS需求-CEN基础版
CEN+私网NAT实现跨地域访问OSS需求-CEN基础版
|
SQL 机器学习/深度学习 存储
通过日志服务实现数据库MySQL入湖OSS实践
日志服务(SLS)是云原生观测分析平台,为Log/Metric/Trace等数据提供大规模、低成本、实时平台化服务。一站式提供数据采集、加工、分析、告警可视化与投递功能。阿里云提供了企业级的数据湖解决方案,存储层基于阿里云对象存储OSS构建。日志服务支持开箱即用的OSS投递入湖功能,实现数据的端到端的入湖。 本文主要介绍如何借助日志服务将关系型数据库MySQL数据入湖和实践,并介绍数据在入湖之前可以日志服务可以提供哪些开箱即用的功能。
403 0
通过日志服务实现数据库MySQL入湖OSS实践
|
弹性计算 Linux 对象存储
阿里云oss如何被挂载到阿里云ecs上,实现内网高速数据备份与共享
ossfs能让您在Linux系统中,将对象存储OSS的存储空间(Bucket)挂载到本地文件系统中,您能够像操作本地文件一样操作OSS的对象(Object),实现数据的共享。
1554 0
阿里云oss如何被挂载到阿里云ecs上,实现内网高速数据备份与共享