4

我有一个 S3 存储桶,里面有文件。我可以成功下载并在我的应用程序上显示该文件。

但是我想知道该文件是否是最新的。使用 Firefox S3 扩展,我可以看到在存储桶文件名中,文件大小和上传时间都保存到 S3。上传时间的一个例子是10/10/2012 11:35 PM

获取我使用的网址

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(queue, ^{

        // Set the content type so that the browser will treat the URL as an image.
        S3ResponseHeaderOverrides *override = [[S3ResponseHeaderOverrides alloc] init];
        override.contentType = @" ";

        // Request a pre-signed URL to picture that has been uplaoded.
        S3GetPreSignedURLRequest *gpsur = [[S3GetPreSignedURLRequest alloc] init];
        gpsur.key                     = _fileName;
        gpsur.bucket                  = [Constants pictureBucket];
        gpsur.expires                 = [NSDate dateWithTimeIntervalSinceNow:(NSTimeInterval) 3600]; // Added an hour's worth of seconds to the current time.
        gpsur.responseHeaderOverrides = override;

        // Get the URL
        NSError *error;
        NSURL *url = [self.s3 getPreSignedURL:gpsur error:&error];

如何获取 Amazon S3 上文件的上传日期?

编辑::::答案

好的,感谢用以下方法回答我可以得到日期

S3GetObjectMetadataRequest *getMetadataRequest = [[S3GetObjectMetadataRequest alloc] initWithKey:_fileName withBucket:[Constants pictureBucket]];
        S3GetObjectMetadataResponse *getMetadataResponse = [self.s3 getObjectMetadata:getMetadataRequest];

        NSString *fileLastModifiedDate = [[NSString alloc] init];
        fileLastModifiedDate = [NSString stringWithFormat:@"%@",getMetadataResponse.lastModified];
        NSLog(@"Last Modified date %@",fileLastModifiedDate);
4

2 回答 2

7

您必须创建一个 S3GetObjectMetadataRequest。

S3GetObjectMetadataRequest *getMetadataRequest = [[S3GetObjectMetadataRequest alloc] initWithKey:filePath withBucket:BUCKET_NAME];
S3GetObjectMetadataResponse *getMetadataResponse = [self getObjectMetadata:getMetadataRequest];

http://docs.amazonwebservices.com/AmazonS3/latest/dev/UsingMetadata.html

于 2012-10-11T14:24:44.240 回答
2

Mord Fustang,关于您答案中的代码的一件事。在从响应中访问它之前,您不需要分配 NSString 对象。

NSString *fileModifiedDate = getMetadataResponse.lastModified;
NSLog(@"Last Modified date %@", fileModifiedDate);
于 2013-01-21T00:06:12.427 回答