云计算百科
云计算领域专业知识百科平台

下载OSS服务器上的文档

文章目录

      • 前言
      • 正文
        • 1. 全路径下载(网页访问)
          • 1.1 桶权限设置
          • 1.2 全路径示例
          • 1.3 网页访问url
          • 1.4 桶限制问题
        • 2. 代码下载
          • 2.1 OSS服务器下载文件流
          • 2.2 通过`EasyExcel`读取文件
          • 2.3 文件读取错误
          • 2.4 结果
      • 结尾

前言

在下载OSS服务器文件的前提条件是配置好了OSS的服务器上传等一系列的配置设置.

依托于《导出记录xls_or_csv文件.md》的4. OSS

我们通常需要从OSS服务上面下载到那我们上传的文件,在下载你方式上面,以下提供了几种下载的途径.

结尾处放置代码.

正文

1. 全路径下载(网页访问)
1.1 桶权限设置

关于Bucket桶的读写权限设置有关于三个: 私有,公共读,公共读写

image-20240520163036215

在未对Bucket进行设置限制的前提情况下,可以通过全路径进行文件的下载

1.2 全路径示例

Bucket桶域名 + 文件夹 + 文件名

https://game-information-console.oss-cn-shenzhen.aliyuncs.com/dev/temporary/game-information-console_486085603664.csv

不包含桶名称的路径 dev/temporary/game-information-console_486085603664.csv

在这里插入图片描述

1.3 网页访问url

可以直接在网页直接搜索全域名直接下载文件

image-20240520164646853

image-20240520164727799

1.4 桶限制问题

如果显示这样子的网页限制

image-20240520170040400

说明Bucket的桶读写权限被限制了(私有).

image-20240520162909696

将其设置为公共读,即可直接通过url进行文件下载,不太建议直接设置成公共读写,权限太大了会直接影响到整个OSS的桶数据

image-20240520162759838

2. 代码下载
2.1 OSS服务器下载文件流

image-20240520172328397

2.2 通过EasyExcel读取文件

定义监听,通过EasyExcel的read读取文件流,然后获取数据列表.

image-20240520173729819

2.3 文件读取错误

文件运行发生错误,提示需要指定类型.

Convert excel format exception.You can try specifying the ‘excelType‘ yourself

添加读取的指定类型

.excelType(ExcelTypeEnum.CSV)

代码如下

image-20240520181423577

2.4 结果

image-20240520182418835

结尾

结尾处放置代码文件

  • OSS下载代码

    /**
    * 下载代码
    * @param endpoint 创建的桶的EndPoint域名地址
    * @param bucket 桶名称
    * @param fileUrl 文件的路径 不包含Bucket名称
    * @return 返回文件流
    */

    private InputStream downLoad(String endpoint, String bucket, String fileUrl){
    //访问凭证
    CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKey, accessKeySecret);
    OSS ossClient = null;
    InputStream inputStream;
    try {
    ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
    //dev/temporary/game-information-console_486085603664.csv
    OSSObject ossObject = ossClient.getObject(bucket, fileUrl);
    inputStream = ossObject.getObjectContent();
    } catch (Exception oe) {
    log.error("oss downLoad error, ", oe);
    throw new RuntimeException("文件流下载失败!");
    } finally {
    if (ossClient != null) {
    ossClient.shutdown();
    }
    }
    return inputStream;
    }

  • ExcelEasy读取代码

    @Resource
    private OSSDomainEvent ossDomainEvent;

    @Transactional
    public void readFile(String fileUrl) {
    long start = System.currentTimeMillis();
    //excel文件的读取监听
    ReadExcelDataToListListener<SyncBalance> listListener = new ReadExcelDataToListListener<>();
    try {
    //OSS读取的文件流
    InputStream inputStream = ossDomainEvent.downLoadOSSInputStream(fileUrl);
    EasyExcel.read(inputStream, SyncBalance.class,listListener)
    .excelType(ExcelTypeEnum.CSV)
    .sheet()
    .doRead();
    inputStream.close();
    } catch (Exception e) {
    log.error("DownLoadOSSBiz readFile 读取文件发生异常 fileUrl:{}, e:{}", JSONObject.toJSONString(e));
    throw new RuntimeException(e);
    }
    List<SyncBalance> list = listListener.getDataList();
    List<SyncBalance> collect = list.stream().filter(ListUtil.distinctByKey(SyncBalance::getMobile)).collect(Collectors.toList());
    if (list.size() != collect.size()) {
    log.error("DownLoadOSSBiz readFile 读取文件发生异常 文件存在重复数据,退出同步 fileUrl:{}",
    fileUrl);
    return;
    }
    log.info("DownLoadOSSBiz readFile 读取完成 fileUrl:{} cost:{}ms", fileUrl , System.currentTimeMillis() start);
    }
    return;
    }
    log.info("DownLoadOSSBiz readFile 读取完成 fileUrl:{} cost:{}ms", fileUrl , System.currentTimeMillis() start);
    }

  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 下载OSS服务器上的文档
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!