快捷餐饮之店家后台OSS文件管理实现
- j3_liuliang
- 快捷点餐的第一步功能实现,就是文件上传功能,做好这个店家后台的相关功能就可以连贯!
项目相关文章导航:
- 快捷点餐项目简介
- 餐饮系统设计概括
- 餐饮系统店家后端基础功能构建
- 快捷餐饮之店家后台OSS文件管理实现
- 快捷餐饮之店家后台厨艺秀实现
- 快捷餐饮之店家后台菜品分类及菜品管理实现
- 快捷餐饮之店家后台评论管理及餐桌管理实现
- 下期实现订单相关功能
项目Git地址:
点这里哦!
一、关于阿里云对象存储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
3.2 点击Bucket列表
3.3 创建成功
3.4 上传文件
四、使用RAM子用户代码访问
每个人的都不一样
用户登录名称 quick-dine-oss-files@1036300182841973.onaliyun.com
AccessKey ID LTAI4GDe9cNNSW1CyzSaDKEr
AccessKey Secret FNnU1YTfzaE72CFTTwBK7bcwrHl84U
五、OSS文件管理实现
这里先不做服务拆分,因为先实现功能后做项目优化,而且我这是一个小的课设,能省那些高大上的东西就省略掉,但功能实现绝对是不会次的
5.1 配置文件自定义属性值
每个人的值都不一样,按对呀的名称填入哦!
aliyun:oss:endpoint: oss-cn-beijing.aliyuncs.comkeyid: LTAI4GFkxZbNBJS98q8AoLyCkeysecret: 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;
}
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 {@Autowiredprivate 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 {@Autowiredprivate OssProperties ossProperties;@Overridepublic 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)) {//创建bucketossClient.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;}@Overridepublic 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 包结构
5.5 测试
5.5.1 上传
登录阿里云看看效果:
5.5.2 删除
登录阿里云看看效果:
结束语
- 由于博主才疏学浅,难免会有纰漏,假如你发现了错误或偏见的地方,还望留言给我指出来,我会对其加以修正。
- 如果你觉得文章还不错,你的转发、分享、点赞、留言就是对我最大的鼓励。
- 感谢您的阅读,十分欢迎并感谢您的关注。
快捷餐饮之店家后台OSS文件管理实现相关推荐
- 快捷餐饮之店家后台订单管理实现
j3_liuliang 上期写了餐桌及评论管理相关的功能,现在我们来实现一下订单管理相关内容 项目相关文章导航: 快捷点餐项目简介 餐饮系统设计概括 餐饮系统店家后端基础功能构建 快捷餐饮之店家后台O ...
- 快捷餐饮之店家后台系统管理实现
j3_liuliang 上期写了商家员工的相关功能,现在我们来实现一下快捷餐饮店家后台最后的一项功能系统相关的功能 项目相关文章导航: 快捷点餐项目简介 餐饮系统设计概括 餐饮系统店家后端基础功能构建 ...
- 快捷餐饮之店家后台评论管理及餐桌管理实现
j3_liuliang 上期写了菜品及分类相关的功能,现在我们来实现一下商家的餐桌及评论管理相关内容 项目相关文章导航: 快捷点餐项目简介 餐饮系统设计概括 餐饮系统店家后端基础功能构建 快捷餐饮之店 ...
- 快捷餐饮之店家后台厨艺秀实现
j3_liuliang 经过前期的一系列的准备之后,现在终于是到了开发业务功能的时候了,本篇开始开发和文件上传相关的厨艺秀图片相关功能 项目相关文章导航: 快捷点餐项目简介 餐饮系统设计概括 餐饮系统 ...
- 快捷餐饮之店家后台菜品分类及菜品管理实现
快捷餐饮之店家后台菜品分类及菜品管理实现 j3_liuliang 上期写了厨艺秀相关的功能,现在我们来实现一下商家的菜品分类及菜品管理及菜品分类相关内容 项目相关文章导航: 快捷点餐项目简介 餐饮系统 ...
- 餐饮系统店家后端基础功能构建
j3_liuliang 快捷餐饮系统基本构建,好的项目基础可以事半功倍哦! 项目相关文章导航: 快捷点餐项目简介 餐饮系统设计概括 餐饮系统店家后端基础功能构建 快捷餐饮之店家后台OSS文件管理实现 ...
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...
- 通用管理后台系统 spring-boot-plus2 (自研)
项目地址:https://gitee.com/wslxm/spring-boot-plus2 (目前最新版在 1.x 分支) 项目历程 该 项目完全为作者个人自研 开发, 已在多个项目中进行开发实践, ...
- 前台传list到后台_实学:Java开发自己的博客系统-第十八篇(后台侧边栏菜单)...
侧边栏技术性尝试后,我们就可以加入对应的功能.让我们一步一步来. 首页快捷热点 首先,后台功能上,一般都有地方,可以让用户点击后进入网站前台的首页:用户不用在浏览器中输入网站链接,毕竟链接输入比较繁琐 ...
最新文章
- 三大测序平台芯片通量对比图
- 南京邮电考研计算机科学大纲,2019年南京邮电大学811数据结构考研大纲
- Java之【线程通信】--标志位练习
- 大脚导入配置选择哪个文件_有史以来最全的 IntelliJ IDEA 配置图解
- .NET Core 3.1之深入源码理解HealthCheck(二)
- 160 - 21 Cabeca
- Android在线更新安装包,Android在线更新下载方案
- 21种mysql_让MySQL飞起来!别小看这21种写SQL的好习惯
- Spyder里面好像不能用汉字
- 并发入库面临重复数据的问题
- delphi OleVariant转换RecordSet
- IT技术人需要具备哪些才能成功
- (转)AppDomain 和动态加载
- 帆软计算字符串中指定字符个数
- Android类参考---Fragment(二)
- matlab gui中断程序,MATLAB GUI的中斷程序
- Could not connect to SMTP host localhost port 25
- Python题目辅导-题目及其题目
- 校园招聘Offer、三方协议、两方协议、劳动合同到底都是什么?怎样避免被坑?
- 迭代扩展卡尔曼滤波学习
热门文章
- SPI Flash芯片W25Q32英文版数据手册解读(一)---------引脚功能,工作模式
- layui修改表格行高
- oracle的rollup操作---按照小组进行分组,同时求总计
- 80个自我提升的网站
- java 设置页面宽度_java – PDFBox设置A5页面大小
- 【爬虫实战】国家企业公示网-crawler爬虫抓取数据
- java文件乱码_Java文件读取乱码问题解决
- java文件乱码_java文件读取出现乱码解决方法
- The inferior stopped because it received a signal from the Operating system signal name: SIGSEGV
- 公积金能付首付吗?你在公积金贷款买房前这些知道吗?