阿里云对象存储服务,OSS使用经验总结,图片存储,分页查询

这篇博客总结了阿里云对象存储服务(OSS)的使用经验,包括存储操作、账号权限管理、分页查询以及缩略图生成等关键功能。此外,还提及了在实际应用中如何进行账号切换,确保服务的顺畅运行。
摘要由CSDN通过智能技术生成
               

阿里云OSS-使用经验总结,存储,账号-权限,分页,缩略图,账号切换


最近项目中,需要使用云存储,最后选择了阿里云-对象存储服务OSS。
总的来说,比较简单,但是仍然遇到了几个问题,需要总结下。


1.OSS总的使用介绍
  https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/api-reference/abstract.6.264.Zq5Hof
  和其它各种技术类似,帮助文档常见的栏目主要是:新手指南(入门)、产品简介、API手册(讲某个接口的用法)、SDK(API的具体化,具体到编程语言)
  最佳实践、计量付费等。
  
2.服务的价值
  之前用过又拍云,听说过七牛云存储。
  总的来说,不同的云厂商做得都差不多,功能总体一致,细节有所差异。
  访问量大的公司,还是最好比较下服务的细节,测试下各家的性能。
  
  就功能来说,对象存储的云服务或者就统一叫做“云存储”,不就是:存储(上传)、下载、访问(图片,直接在网页中展示)、批量查询。
  周边功能,账户权限、文件权限等。
  
  具体到文件存储,和本地Java的API,第三方的API都类似,只不过这个时候,存储的实际物理位置在远程服务器上。
  高端一点的说法,就是“云”。
  
3.OSS和云存储
  云存储,是一种广泛的称谓。
  对象存储,文件存储,其它存储,则场景更加具体一些。
  云数据库,本质还是云存储,只是不是标准文件罢了。
  
4.API和SDK
  官方文档:https://help.aliyun.com/document_detail/oss/api-reference/abstract.html?spm=5176.docoss/sdk/java-sdk/manage_object.6.196.zg3gsg
  配置账号和密码,建立远程连接,执行操作,关闭连接。
  太多太多的SDK,都是这么几步。
  
5.遇到的几个问题
  a.账户权限

    用自己的账号,阿里云的AccessKeyId和AccessSecret,没有遇到任何问题。
 但是,用别人给的账号,创建bucket和批量查询的时候,总是提示没有权限。
 第1次遇到权限问题的时候,还不能确认,以为是某个地方没有配置正确。再次遇到的时候,就提交了工单,和官方的技术支持人员确定了。
 不懂的问题,提交工单,阿里云的工单服务,还是很不错的。
 
 问题原因:别人给的账号密码,是子账户,分配权限不够。
 
 新手入门,直接使用最高权限就好。
 更深入的权限管理,RAM和STS使用指南,可参考
 https://help.aliyun.com/document_detail/oss/practice/ram_guide.html?spm=5176.docoss/api-reference/abstract.6.179.H0uY1x
  
  b.图片
    普通的文本文件,图片,都是文件,存储方式没啥区别。
 需要注意的是,在云端,图片逻辑上是“目录”存储,实际物理层次不是,可以根据前缀prefix,来模拟目录。
 
 图片,可以有额外的云服务,比如图片缩略图、缩放、反转、水印、防盗链等。
    目前遇到的问题是,大尺寸的高清图片,缩略图的宽度很小时,不够清晰,而官网上的缩略图案例却还比较清晰,不清楚为啥。
 
  c.分页访问
    官方API,是根据nextMarker(可以理解为下1页开始的id),来分页的,每页最多获得1000条。
 没有提供,一次性获得所有图片的接口,只能多次迭代,拿到所有的key。
 
 在实际需要中,后端管理系统,想分页查看图片列表,但是由于阿里云的API功能有限,只能有“上一页”和“下一页”。
 类似“1 2 3 4 5 .. 100 101”这种分页展示方式,只能自己去实现。
 
 我在做的时候,是通过多次迭代获得所有图片列表,缓存到Redis中,然后手动实现分页来做的。


6.自己封装的代码
   只贴自己的核心代码,周边的实体类和第三方jar,不再列出。
   
 
 import java.io.ByteArrayInputStream;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.lang.reflect.InvocationTargetException;import java.util.ArrayList;import java.util.List;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值