가끔 S3에서 업데이트해야하는 로컬 파일이 있습니다. 나는 S3 버전이 더 새로운 경우에만 그들을 업데이 트하는 것을 선호합니다. S3 객체에서C#에서는 로컬 파일의 datemodified 속성을 Amazon S3 파일과 어떻게 비교합니까?
ModifiedSinceDate
속성을 잘 이해할 수 없습니다. 사실, 메타 데이터를 사용할 지, 아니면 내가 검사 할 내용이 있는지 확실하지 않습니다.
나는 이런 식으로 뭔가를 상상 해요 :
GetObjectRequest request = new GetObjectRequest().WithBucketName(my_bucketName).WithKey(s3filepath);
using (GetObjectResponse response = client.GetObject(request))
{
string s3DateModified = response.ModifiedSinceDate; // Complete psuedo code
DateTime s3_creationTime = DateTime.Convert(s3DateModified); //Complete psuedo code
DateTime local_creationTime = File.GetCreationTime(@"c:\file.txt");
if (s3_creationTime > local_CreationTime)
{
//download the S3 object;
}
}
감사합니다 순전히!
수정 ---------------------------------------
PutObjectRequest titledRequest = new PutObjectRequest();
.WithFilePath(savePath)
.WithBucketName(bucketName)
.WithKey(tempFileName)
.WithMetaData("Last-Modified", System.DateTime.Now.ToString());
다음
체크/다운로드를 위해 이것을 사용 :
using (GetObjectResponse response = client.GetObject(request))
{
string lastModified = response.Metadata["x-amz-meta-last-modified"];
DateTime s3LastModified = Convert.ToDateTime(lastModified);
string dest = Path.Combine(@"c:\Temp\", localFileName);
DateTime localLastModified = File.GetLastWriteTime(dest);
if (!File.Exists(dest))
{
response.WriteResponseStreamToFile(dest);
}
if (s3LastModified > localLastModified)
{
response.WriteResponseStreamToFile(dest);
}
}
나는 원래 객체를 업로드 할 때 나는 메타 태그로 수정 날짜를 쓰고 있어요 ... 거의 다 해요 뭔가 깨고있어, 난 아마도 WriteResponseStream 비동기이며, 그것은 두 respnse.WriteResponseStreamtToFil 노력하고있어 e (dest) 동시에. 어쨌든, 내가 그것을 못 박히면 얻을 수있을거야.
헤이 Geoff-의 정말 고마워요. 이것은 기본적으로 작동하지만 응답. 마지막 수정 된 결과는 이상 할 수 있습니다. 개체가 캐시되고 있기 때문에 확실하지 않지만 S3에서 반환 된 DateTime은 각 호출마다 다를 수 있습니다. 그 문제가 있었나요? 그렇지 않으면 완벽하게 작동합니다. –
@Hairgami_Master - 이상 하네. 전에 'LastModified' 속성을 많이 사용하지는 않았지만 이전에는이를 알지 못했습니다. 파일을 다시 업로드 한 것처럼 임의의 날짜 또는 항상 최신 날짜입니까? –
솔직히 말해서 나는 패턴을 식별 할 수 없었습니다. S3에 똑같은 파일을 두 번 넣으면 동일한 LastModified 결과가 나오는지, 아니면 다를지를 이해하려고합니다. 다른 말로하면, S3에 파일을 복사하는 것이 수정 중입니까? –