Amazon S3 REST方式获取Object

Amazon S3 用REST方式获取文件 具体参见API http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html

利用C#构建下面的请求

GET /ObjectName HTTP/1.1
Host: BucketName.s3.amazonaws.com
Date: date
Authorization: signatureValue
Range:bytes=byte_range

伪代码:

 1 HttpWebRequest request = WebRequest.Create("URL") as HttpWebRequest;
 2                 WebHeaderCollection headers = (request as HttpWebRequest).Headers;
 3            
 4                 string httpDate
 5                     = DateTime.UtcNow.ToString("ddd, dd MMM yyyy HH:mm:ss ", System.Globalization.DateTimeFormatInfo.InvariantInfo) + "GMT ";
 6 
 7             
 8                 string canonicalString = "PUT /test1.doc \n\n\n x-amz-date:" + httpDate + "\n/";
 9              
10                 Encoding ae = new UTF8Encoding();
11             
12                 HMACSHA1 signature = new HMACSHA1();
13            
14                 signature.Key = ae.GetBytes("SerectID");
15                 byte[] bytes = ae.GetBytes(canonicalString);
16                 byte[] moreBytes = signature.ComputeHash(bytes);
17           
18                 string encodedCanonical = Convert.ToBase64String(moreBytes);
19 
20                 headers.Add("Authorization", "AWS AccessID" +":" + encodedCanonical);
21              
22                 request.Method = "PUT";
23                 request.Date = DateTime.UtcNow;
24              
25                 string postData = @"test-1.doc";
26                 byte[] byteArray = Encoding.UTF8.GetBytes(postData);
27               
28                 request.ContentType = "text/plain"; // "application/x-www-form-urlencoded";
29               
30                 request.ContentLength = byteArray.Length;
31            
32                 Stream dataStream = request.GetRequestStream();
33             
34                 dataStream.Write(byteArray, 0, byteArray.Length);
35           
36                 dataStream.Close();
37            
38                 WebResponse response = request.GetResponse();
39          
40                 Console.WriteLine(((HttpWebResponse)response).StatusDescription);
41               
42                 dataStream = response.GetResponseStream();
43               
44                 StreamReader reader = new StreamReader(dataStream);
45           
46                 string responseFromServer = reader.ReadToEnd();
47            
48                 reader.Close();
49                 dataStream.Close();
50                 response.Close();
原文地址:https://www.cnblogs.com/mvpajun/p/3097001.html