阿里的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)或者深度冷归档(Deep Cold Archive)作为不经常访问数据的存储方式。

应用场景有哪些?

       利用海量互联网带宽,OSS可以实现海量数据的互联网并发下载。OSS提供原生的传输加速功能,支持上传加速、下载加速,提升跨国、跨洋数据上传、下载的体验。同时,OSS也可以结合CDN产品,提供静态内容存储、分发到边缘节点的解决方案,利用CDN边缘节点缓存的数据,提升同一个文件被同一地区客户大量重复并发下载的体验。

我们如何快速使用OSS?

  1. 进入阿里云平台搜索oss根据提示开通oss功能

  2. 创建存储空间Bucker

第三步填写信息

参数说明:

    Bucker名称创建后无法修改

    地域:可以根据产品主要面向地点进行最优选择,

存储类型:

​     标准存储:提供高可靠、高可用、高性能的对象存储服务,能够支持频繁的数据访问。适用于各种社交、分享类的图片、音视频应用、大型网站、大数据分析等业务场景。

     低频访问:提供高持久性、较低存储成本的对象存储服务,适用于较低访问频率(平均每月访问频率1到2次)的业务场景

    归档存储:提供高持久性、极低存储成本的对象存储服务。归档存储数据支持解冻(约1分钟)后访问或直接访问。归档存储适用于数据长期保存的业务场景,例如档案数据、医疗影像、科学资料、影视素材等

    冷归档存储:提供高持久性、比归档存储的存储成本更低的对象存储服务。适用于需要超长时间存放的冷数据,例如因合规要求需要长期留存的数据、大数据及人工智能领域长期积累的原始数据、影视行业长期留存的媒体资源、在线教育行业的归档视频等业务场景。

   深度冷归档存储:提供高持久性、比冷归档存储成本更低的对象存储服务。数据需解冻后访问,解冻时间根据数据大小和选择的解冻模式决定。适用于需要超长时间存放的极冷数据,例如大数据及人工智能领域的原始数据的长期积累留存、媒体数据的长期保留、法规和合规性存档、磁带替换等业务场景。

存储冗余类型:

​    同城冗余:将您的数据冗余存储在同一个区域的多个可用区,可支持单个可用区(机房)整体故障时(如断电、火灾等),仍维持数据不丢失,可正常访问。

    本地冗余:将您的数据冗余存储在同一个可用区的不同存储设备上,可支持两个存储设备并发损坏时,仍维持数据不丢失,可正常访问。

读写权限

      私有:只有授权用户可以操作

     公共读:只能读操作

     公共读写:可读可写

所属资源组:就是买的oss产品

创建好之后oss也可以当作简单的存储工具存储一些数据

下面是我写的一个上传和列表展示功能的全部细节

第一步导入一个依赖

我这里是1.8版本的

 <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.15.1</version>
        </dependency>

第二步根据官方文档写了一个工具包

@Service
public class Aliossupload {
    //阿里云的地域地址
    private static final String  ENDPOINT = "oss的地域地址";
    //阿里云API的密钥Access Key ID
    private static final String ACCESS_KEY_ID="密钥id";
    //阿里云API的密钥Access Key Secret
    private static final String ACCESS_KEY_SECRET="密钥";
    // 填写Bucket名称,例如examplebucket。
    private static final String  BUCKET_NAME  = "bucke名称";
    private static final OSS ossClient;
    static {
        // 创建OSSClient实例。
        ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID,ACCESS_KEY_SECRET);
    }
    public static String uploadFile(String fileName, byte[] fileBytes){
//        // 创建OSSClient实例。
//        OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID,ACCESS_KEY_SECRET);
        ossClient.putObject(BUCKET_NAME, fileName, new ByteArrayInputStream(fileBytes));
        Date expiration = new Date(new Date().getTime() + 3600 * 1000);
        // 生成URL
        ossClient.generatePresignedUrl(BUCKET_NAME, fileName, expiration);
        return "";
    }
        public static List<FileInfo> getupdate(){
        ObjectListing objectListing = ossClient.listObjects(BUCKET_NAME);
        // objectListing.getObjectSummaries获取所有文件的描述信息。
        List<FileInfo> fileInfos = objectListing.getObjectSummaries().stream().map(s -> {
            FileInfo fileInfo = new FileInfo();
            fileInfo.setName(s.getKey());
            Date expiration = new Date(new Date().getTime() + 3600 * 1000);
            URL url = ossClient.generatePresignedUrl(BUCKET_NAME, s.getKey(), expiration);
            fileInfo.setUrl(url.toString());
            return fileInfo;
        }).collect(Collectors.toList());
        return fileInfos;
    }
}

这里有四个参数非常重要:

阿里云AccessKey Id:钥匙id

阿里云AccessKey Secret 钥匙密钥

密钥id和密钥在AccessKey管理里面进行设置

阿里云OSS EndPoint:oss地域地址,官方文档中已经说明:访问域名和数据中心_对象存储 OSS-阿里云帮助中心

阿里云OSS Bucket:创建Bucket名称

第三步写Controller文件

model类

//展示页需要的实体类
@Data
public class FileInfo {

    private String name;
    private String url;
}
//上传图片需要的实体类
@Data
public class UploadInfo {
   private String name;
   private String base64;

}

controller

@RestController
@RequestMapping("/api/upload")
public class UploadController {
    @Autowired
    Aliossupload aliossupload;
    @PostMapping
    //上传图片其中用到了加密
    public String upload(@RequestBody UploadInfo uploadInfo) throws Exception {
        // 获取上传信息的文件名
        String name = uploadInfo.getName();
        // 在文件名前添加当前时间毫秒数和"_"
        name = System.currentTimeMillis() + "_" + name;
        // 获取上传信息的base64编码字符串
        String base64 = uploadInfo.getBase64();
        // 将base64编码字符串按照"base64,"分割成字符串数组
        String[] strArray = StrUtil.splitToArray(base64, "base64,");
        // 解码base64编码字符串并得到字节数组
        byte[] bytes = Base64.decode(strArray[1]);
        // 将字节数组写入到文件中
       // File file = FileUtil.writeBytes(bytes,name);
        // 调用阿里oss上传方法上传文件,并获取上传后的文件url
        // 返回文件的url

        return Aliossupload.uploadFile(name, bytes);
    }
    //图片展示
    @GetMapping
    public List<FileInfo> upload() {
        return  Aliossupload.getupdate();
    }
}

如果你感觉好的话就点赞关注,你的关注将是我更新的动力谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值