0
点赞
收藏
分享

微信扫一扫

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




  • j3_liuliang
  • 快捷点餐的第一步功能实现,就是文件上传功能,做好这个店家后台的相关功能就可以连贯!


​项目相关文章导航:​


  1. ​​快捷点餐项目简介​​
  2. ​​餐饮系统设计概括​​
  3. ​​餐饮系统店家后端基础功能构建​​
  4. ​​快捷餐饮之店家后台OSS文件管理实现​​
  5. ​​快捷餐饮之店家后台厨艺秀实现​​
  6. ​​快捷餐饮之店家后台菜品分类及菜品管理实现​​
  7. ​​快捷餐饮之店家后台评论管理及餐桌管理实现​​
  8. 下期实现订单相关功能

​项目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

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

3.2 点击Bucket列表

快捷餐饮之店家后台OSS文件管理实现_经验分享_02

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

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

3.3 创建成功

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

3.4 上传文件

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

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

快捷餐饮之店家后台OSS文件管理实现_经验分享_08

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

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

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

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

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

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

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

每个人的都不一样

用户登录名称 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;
}

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

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 包结构

快捷餐饮之店家后台OSS文件管理实现_程序人生_16

5.5 测试

5.5.1 上传

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

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

快捷餐饮之店家后台OSS文件管理实现_程序人生_19

登录阿里云看看效果:

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

5.5.2 删除

快捷餐饮之店家后台OSS文件管理实现_经验分享_21

快捷餐饮之店家后台OSS文件管理实现_经验分享_22

登录阿里云看看效果:

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

结束语


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


举报

相关推荐

0 条评论