开发者社区 问答 正文

获取文件版本列表,dentryId怎么确认是什么

0x01 问题描述

在存储管理-》空间管理-》文件管理-》获取文件版本列表接口中需要传入文件ID(dentryId)
dentryId是从 获取文件或文件夹列表接口 中获取,而获取文件或文件夹列表接口需要传入参数parentId,在我测试中填入参数后,报错permissionDenied,
image.png
而权限管理中,我把文件操作权限都打开了
image.png

有两个问题
1.这个403报错怎么解决
2.获取文件或文件夹列表接口中 parentId怎么确认,因为这个parentId也是在调用获取文件或文件夹列表接口中获取,进入死循环了。

展开
收起
1564509173452469 2024-01-18 10:17:25 200 分享 版权
1 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    要获取文件版本列表,可以使用阿里云的Object Storage Service(OSS)SDK。在Java中,可以使用OSS的Java SDK来操作OSS。

    首先,需要确认dentryId是什么。在OSS中,dentryId是用于标识一个目录项的唯一标识符。每个对象都有一个对应的元数据,其中包含了该对象的一些属性信息,例如文件名、大小、创建时间等。而dentryId就是用于标识这些元数据的。

    要获取文件版本列表,可以按照以下步骤进行:

    1. 创建一个OSSClient实例,用于连接OSS服务。
    2. 使用OSSClient实例的getObjectMetadata方法获取指定文件的元数据信息。
    3. 从元数据信息中提取出dentryId。
    4. 使用OSSClient实例的listVersions方法获取指定文件的所有版本列表。
    5. 遍历版本列表,获取每个版本的URL和最后修改时间等信息。

    以下是示例代码:

    import com.aliyun.oss.OSS;
    import com.aliyun.oss.OSSClientBuilder;
    import com.aliyun.oss.model.ListVersionsRequest;
    import com.aliyun.oss.model.ListVersionsResult;
    import com.aliyun.oss.model.ObjectMetadata;
    import com.aliyun.oss.model.OSSObjectSummary;
    import com.aliyun.oss.model.VersionSummary;
    
    public class OSSVersionList {
        public static void main(String[] args) {
            // 创建OSSClient实例
            String endpoint = "<your-endpoint>";
            String accessKeyId = "<your-access-key-id>";
            String accessKeySecret = "<your-access-key-secret>";
            String bucketName = "<your-bucket-name>";
            String objectKey = "<your-object-key>";
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    
            // 获取文件元数据信息
            ObjectMetadata metadata = ossClient.getObjectMetadata(bucketName, objectKey);
            String dentryId = metadata.getUserDefined(); // 提取dentryId
            System.out.println("DentryId: " + dentryId);
    
            // 获取文件版本列表
            ListVersionsRequest listVersionsRequest = new ListVersionsRequest(bucketName, objectKey);
            listVersionsRequest.setMaxKeys(10); // 设置最大返回结果数,默认为1000
            ListVersionsResult listVersionsResult = ossClient.listVersions(listVersionsRequest);
            for (VersionSummary versionSummary : listVersionsResult.getVersionSummaries()) {
                String versionId = versionSummary.getVersionId(); // 获取版本ID
                String versionUrl = versionSummary.getVersionUrl(); // 获取版本URL
                Date lastModified = versionSummary.getLastModified(); // 获取最后修改时间
                System.out.println("VersionId: " + versionId + ", VersionUrl: " + versionUrl + ", LastModified: " + lastModified);
            }
        }
    }
    
    2024-01-19 14:38:22
    赞同 展开评论