【问题标题】:AWS SDK: Equivalent S3FileInfo methods for .net standardAWS 开发工具包:.net 标准的等效 S3FileInfo 方法
【发布时间】:2018-02-22 09:06:10
【问题描述】:

我正在努力将我们的软件升级到 .NET Standard。我注意到 AWS SDK 不支持 AWS.S3.IO 库,因此我们之前使用的 S3FileInfo 代码需要更新。

跳出来的是LengthExists 方法。这些用于向 S3 发出 HEAD 请求以确定需要什么。我现在看不到等价物 - 看起来我必须改为使用 GetObjectRequest,这是一个完整的 GET 请求。

这是正确的,还是有办法执行 HEAD 操作来检查 .NET Standard AWS 开发工具包中的存在和长度?

【问题讨论】:

    标签: .net amazon-s3 .net-core aws-sdk


    【解决方案1】:

    【讨论】:

    • 链接似乎已损坏。
    • 我已经修复了链接
    • 还有其他选择吗?
    【解决方案2】:

    这个AWS Forum 帖子引导我找到S3FileInfo 的原始代码:

    GitHub Link

    我发现这对于在 .Net Core 6 中重新创建我需要的功能非常有用,即文件是否存在。

    根据该代码,我的代码最终是这样的:

    public async Task<bool> fileExists(string bucket, string key)
    {
        try
        {
          // you provide the s3Client in your call, or create a new one
          await s3Client.GetObjectMetadataAsync(bucket, key);
    
          return true;
        }
        catch (AmazonS3Exception ex)
        {
           if (string.Equals(ex.ErrorCode, "NotFound"))
               return false;
    
           throw;
         }
    }
    

    (是的,如果密钥不存在,GetObjectMetadataAsync 会抛出异常;让我想起了我在 Microsoft DAO 的日子!)

    也许有一天亚马逊会为 .Net Core 提供更好的 SDK?

    【讨论】:

      猜你喜欢
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多