代码之家  ›  专栏  ›  技术社区  ›  BerggreenDK

用C语言通过AWS.NET从S3存储器中检索二进制数据#

  •  5
  • BerggreenDK  · 技术社区  · 16 年前

    我已经测试了awssdkfor.NET中包含的大多数示例,它们都运行良好。

    我可以在bucket中放置对象、列出对象和删除对象,但是。。。假设我删除了原始文件并想同步本地丢失的文件?

    我想创建一个GET对象(通过key/name和bucket of cause)。我可以找到对象,但是如何通过API从S3读取二进制数据呢?

    我需要为这个写我自己的肥皂包装吗?或者“这里”有什么样的例子吗(o)

    有人吗???

    1 回复  |  直到 16 年前
        1
  •  20
  •   BigJoe714    16 年前

    举个例子:

    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();
                    }
                }
            }
        }
    }