Amazon S3 получает список версий для загруженного файла - PullRequest
3 голосов
/ 30 апреля 2011

Я включил опцию управления версиями для моей корзины. Я также дважды загрузил файл в папку в моем ведре с тем же именем, создав две ревизии файла.

например. mybucket / myfile.jpg (редакция 1 и редакция 2 (текущая))

Я пытаюсь использовать инструменты AmazonS3 .NET, чтобы получить список версий для одного файла, как указано выше. Поскольку я хочу, чтобы функциональность для пользователя могла загружать предыдущую версию загруженного файла.

Вот метод, который я создал, я могу получить список всех файлов в моей корзине / папке. Но не конкретный файл в папке / папке (я называю это папкой, но это сам по себе ключ / объект).

public String AmazonS3GetObjectVersions(Guid DocumentId)
{
    AmazonS3 s3Client = AmazonS3ClientConnection();

    GetObjectMetadataRequest ORequest = new GetObjectMetadataRequest();
    ORequest.BucketName = DocumentStorageFolder(DocumentId); // e.g. mybucket
    ORequest.Key = DocumentStorageReference(DocumentId); // e.g. myfolder/myfile.jpg

    GetObjectMetadataResponse OResponse = s3Client.GetObjectMetadata(ORequest);

    S3ObjectVersion version = new S3ObjectVersion();
    version.BucketName = DocumentStorageFolder(DocumentId);
    version.Key = DocumentStorageReference(DocumentId);
    version.IsDeleteMarker = false;

    ListVersionsRequest Request = new ListVersionsRequest();
    Request.BucketName = DocumentStorageFolder(DocumentId);

    String tmp = DocumentStorageReference(DocumentId);

    string[] tmparr = tmp.Split('/');

    Request.KeyMarker = tmparr[0];
    //Request.Delimiter = "/";
    //Request.MaxKeys = int.Parse(appConfig["MAX_VERSIONS"]);

    ListVersionsResponse Response = s3Client.ListVersions(Request);

   //Response.NextKeyMarker = tmparr[1];

   Response.KeyMarker = tmparr[1];

   List<S3ObjectVersion> Versions = new List<S3ObjectVersion>();

   Versions = Response.Versions;

   return Versions.ToString();
}

Я перепробовал несколько доступных классов, но мне не удалось получить историю версий для одного файла. (Возможно пропускает что-то маленькое)

1 Ответ

3 голосов
/ 09 мая 2011

Как вы упомянули, вам не хватает мелочи. Используйте префикс запроса ListVersionsRequest

* 1005 Е.Г. *

ListVersionsRequest Request = new ListVersionsRequest();
Request.BucketName = DocumentStorageFolder(DocumentId);
Request.Prefix = KeyName

Камаль

...