时间:2010-07-23 19:17:55

标签: c# amazon-s3

5 个答案:

答案 0 :(得分:9)

你可以使用这个类的S3FileInfo类和Exists方法来检查文件是否存在而不下载文件。请参阅下面的示例我使用了AWSSDK 3.1.6 .net(3.5):

public static  bool ExistsFile()
{
    BasicAWSCredentials basicCredentials = new BasicAWSCredentials("my access key", "my secretkey");
                AmazonS3Config configurationClient = new AmazonS3Config();
                configurationClient.RegionEndpoint = RegionEndpoint.EUCentral1;

                try
                {
                    using (AmazonS3Client clientConnection = new AmazonS3Client(basicCredentials, configurationClient))
                    {

                        S3FileInfo file = new S3FileInfo(clientConnection, "mybucket", "FolderNameUniTest680/FileNameUnitTest680");
                        return file.Exists;//if the file exists return true, in other case false
                    }
                }
                catch(Exception ex)
                {
                    return false;
                }
    }

答案 1 :(得分:4)

试试这个解决方案,它对我有用。

AmazonS3Client client = new AmazonS3Client(accessKey, secretKey, regionEndpoint);       
S3FileInfo s3FileInfo = new S3FileInfo(client, bucketName, fileName);
s3FileInfo.Exists ? return true:return false;

答案 2 :(得分:1)

没有ListObjectRequest,而是ListObjectsRequest,您无法指定Key。然后,您必须浏览所有对象才能找到所需的对象。我目前正在寻找它,因为我似乎在下载文件时得到了时间错误。 (如果有人知道如何解决,请随意评论)。

如果您碰巧知道上传ID,则可以尝试列出部件请求。

除此之外我不知道。想和编写S3 api的人聊聊......

答案 3 :(得分:1)

你可能不得不自己使用REST API,正如方法所建议的那样,内部只是做同样的事情(尝试...抓住请求)

答案 4 :(得分:-1)

您可以使用ListObjectsRequest。使用Marker属性,只检索1个元素。