什么是检查S3对象是否存在的最佳方法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是检查S3对象是否存在的最佳方法?相关的知识,希望对你有一定的参考价值。
目前,我制作一个GetObjectMetaDataRequest
,如果GetObjectMetaDataResponse
抛出异常意味着该对象不存在。有没有更好的方法来检查文件是否存在而不下载文件。
答案
你可以使用这个类的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;
另一答案
尝试这个解决方案,它适合我。
AmazonS3Client client = new AmazonS3Client(accessKey, secretKey, regionEndpoint);
S3FileInfo s3FileInfo = new S3FileInfo(client, bucketName, fileName);
s3FileInfo.Exists ? return true:return false;
另一答案
没有ListObjectRequest,而是ListObjectsRequest,您无法在其中指定Key。然后,您必须浏览所有对象才能找到所需的对象。我目前正在寻找它,因为我似乎在下载文件时得到了时间错误。 (如果有人知道如何解决,请随意评论)。
如果您碰巧知道上传ID,则可以尝试列出部件请求。
除此之外,我不知道。想与编写S3 api的人聊聊...
另一答案
你可能不得不自己使用REST API,正如方法所建议的那样,内部只是做同样的事情(尝试...抓住请求)
另一答案
是。
您可以使用ListObjectsRequest。使用Marker属性,仅检索1个元素。
以上是关于什么是检查S3对象是否存在的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章