下载OSS服务器上的文档

前言

在下载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

结尾

结尾处放置代码文件

  1. 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;
        }
    
  2. 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);
        }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值