Получить двоичные данные из хранилища S3 через AWS.NET в C # - PullRequest
5 голосов
/ 16 марта 2010

Я протестировал большинство включенных примеров в AWS SDK для .NET, и все они отлично работают.

Я могу помещать объекты, объекты LIST и DELETE в корзину, но ... допустим, я удаляю оригинал и хочу синхронизировать эти файлы, отсутствующие локально?

Я хотел бы сделать объект GET (по ключу / имени и группе причин). Я могу найти объект, но как мне прочитать двоичные данные из S3 через API?

Должен ли я написать свою собственную оболочку SOAP для этого или есть какой-то пример для этого "здесь"? : О)

В надежде на образец. Это не должно допускать исключения и т. Д. Мне просто нужно увидеть основные части, которые соединяют, извлекают и сохраняют файл обратно в мой проект ASP.net или C #.

Любой ???

1 Ответ

15 голосов
/ 03 мая 2010

Вот пример:

string bucketName = "bucket";
string key = "some/key/name.bin";
string dest = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "name.bin");

using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(AWSAccessKeyID, AWSSecretAccessKeyID))
{
    GetObjectRequest getObjectRequest = new GetObjectRequest().WithBucketName(bucketName).WithKey(key);

    using (S3Response getObjectResponse = client.GetObject(getObjectRequest))
    {
        if (!File.Exists(dest))
        {
            using (Stream s = getObjectResponse.ResponseStream)
            {
                using (FileStream fs = new FileStream(dest, FileMode.Create, FileAccess.Write))
                {
                    byte[] data = new byte[32768];
                    int bytesRead = 0;
                    do
                    {
                        bytesRead = s.Read(data, 0, data.Length);
                        fs.Write(data, 0, bytesRead);
                    }
                    while (bytesRead > 0);
                    fs.Flush();
                }
            }
        }
    }
}
...