zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    TO DO List
    springboot 热部署
    <dependencyManagement>的作用
    人体工程学座椅
    temp
    temp
    声明式编程和命令式编程的本质区别
    weak first question
    Spring依赖注入方式和依赖来源
    SpringBoot 整合 H2 数据库
  • 原文地址:https://www.cnblogs.com/mvpajun/p/3097001.html
Copyright © 2011-2022 走看看