开发者社区 > 云效DevOps > 正文

流水线中oss上传,文件meta问题

问题描述

流水线中oss上传

如何设置整个文件夹中文件的meta,而不是需要区分文件名后缀后分开设置

期望结果

可以设置整个文件夹中文件的meta

已尝试的方法

将后缀名key设置为* 或空都不行

展开
收起
1919514970740618 2023-03-03 17:51:14 193 0
2 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    您好,针对您提到的流水线中OSS上传时如何设置整个文件夹中文件的meta的问题,建议您可以使用以下两种方式来实现:

    1. 使用阿里云CLI命令行工具 您可以在上传文件到OSS的同时,使用命令行工具设置整个文件夹中文件的meta。具体操作方法如下:
    Copy Code$ ossutil -e oss-cn-hangzhou.aliyuncs.com -i <AccessKeyId> -k <AccessKeySecret>   \
        set-meta --recursive --meta x-oss-meta-key:value oss://example-bucket/dir/
    

    其中,--recursive参数表示递归处理整个目录下的所有文件;--meta参数表示要设置的Meta信息;oss://example-bucket/dir/表示要进行操作的OSS存储空间及目录。

    1. 使用OSS SDK进行开发 您也可以使用OSS SDK进行开发,通过编写程序实现对整个文件夹中文件的meta进行设置。通常情况下,SDK提供了一些便捷的方法来支持批量操作和递归操作,例如Java开发环境中,可以使用如下代码实现整个文件夹中文件的meta设置:
    javaCopy CodeObjectListing objectListing = ossClient.listObjects(bucketName, folderName);
    List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
    
    for (OSSObjectSummary s : sums) {
        ObjectMetadata meta = ossClient.getObjectMetadata(bucketName, s.getKey());
        String contentType = meta.getContentType();
        meta.addUserMetadata("x-oss-meta-key", "value");
        ossClient.copyObject(bucketName, s.getKey(), bucketName, s.getKey(), 
            new CopyObjectRequest(meta).withSourceBucketName(bucketName)
                                    .withSourceKey(s.getKey()));
    }
    

    以上是两种常用的方式,您可以根据自身需求选择相应的方法进行操作。希望能对您有所帮助!

    2023-03-19 01:26:37
    赞同 展开评论 打赏
  • 阿里云文档团队

    这个的话只能进行设置文件后缀的设置的

    2023-03-06 14:45:10
    赞同 展开评论 打赏

云效,企业级一站式研发协同平台,数十万企业都在用。支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现研发敏捷和组织敏捷,打造“双敏”组织,实现多倍效能提升。

热门讨论

热门文章

相关电子书

更多
云存储之OSS实战进阶分享 立即下载
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载