概要
OSS SDKは、署名機能とアップロードおよびダウンロード機能を統合するSDKを提供します。 ただし、実際には、署名を考慮してオブジェクトをアップロードおよびダウンロードするには、APIを使用する必要があります。 このトピックでは、PutObject APIを例として、C# でオブジェクトをアップロードおよびダウンロードする方法について説明します。
説明
注: OSS SDKの使用を推奨します。 このトピックでは、署名を使用してオブジェクトをアップロードする方法の例を示します。 実際に使用するビジネスコードを変更できます。
詳細
C# でPutObject APIを使用するためのサンプルコードは次のとおりです。
説明
注: 次の例は、Visual Studio 2017ツールおよびNET Framework4.0パッケージに実装されています。
システムを使用して;
System.Security.Cryptographyを使用する。System.Textを使用する。System.Netを使用する。System.IOを使用する。システムを使用して。反射;
名前空間Aliyun.OSS.Samples
{
class Program
{
// あなたのAccessKey
パブリック静的文字列AccessKey = "xx";
// AccessKeySecret
パブリック静的文字列AccessKeySecret = "xx";
// バケットのエンドポイント
パブリック静的文字列Endpoint = "oss-cn-hangzhou.aliyuncs.com";
パブリック静的文字列BucketName = "xx";
パブリック静的文字列objectName = "mytest/1.txt";
パブリック静的文字列HmacSha1Sign (文字列シークレット、文字列strOrgData)
{
var hmacsha1 = new HMACSHA1(Encoding.UTF8.GetBytes(secret));
var dataBuffer = Encoding.UTF8.GetBytes(strOrgData);
var hashBytes = hmacsha1.ComputeHash(dataBuffer);
リターンConvert.ToBase64String(hashBytes);
}
public static string HttpRequest(string url, string data, string sign, string contentType, string time1)
{
byte[] datas = System.Text.Encoding.GetEncoding("UTF-8").GetBytes (データ);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
リクエストメソッド="PUT";
request.Timeout = 150000;
request.Headers.Add("Authorization", "OSS" + AccessKey + ":" + sign);
CallPrivateMethod (リクエスト、"SetSpecialHeaders" 、"Date" 、time1);
request.ContentType = contentType;
ストリームrequestStream = null;
文字列responseStr = null;
try
{
if (datas != null)
{
request.ContentLength = datas.Length;
requestStream = request.GetRequestStream();
requestStream.Write(datas, 0, datas.Length);
requestStream.Close();
}
else
{
request.ContentLength = 0;
}
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
responseStr = response.Headers.GetValues("x-oss-request-id")[0];
// responseStr = sr.ReadToEnd();
}
catch (例外)
{
Console.WriteLine("エラー");
}
finally
{
request = null;
requestStream = null;
}
リターンresponseStr;
}
パブリック静的文字列ToGMTString()
{
return DateTime.Now.ToUniversalTime().ToString("r");
}
public static void CallPrivateMethod (オブジェクトインスタンス、文字列名、params object[] param)
{
BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;
Type type = instance.GetType();
MethodInfoメソッド=type.GetMethod(name, flag);
メソッドを呼び出す (インスタンス、param);
}
static void Main(string[] args)
{
string varb = "PUT";
string content_type = "application/json";
string timeGmt = ToGMTString();
string str = varb + "\n\n" + content_type + "\n" + timeGmt + "\n/" + BucketName + "/" + objectName;
文字列署名=HmacSha1Sign(AccessKeySecret、str);
string url = "http://" + BucketName + "" 。+ エンドポイント + "/" + objectName;
string data = "{ \" key\":\" this is a oss's test\"}";
string result = HttpRequest(url、data、signature、content_type、timeGmt);
Console.WriteLine("requestId: " + 結果);
}
}
}ドキュメント
OSS SDKの使用方法の詳細については、「OSSヘッダーへの署名の追加」をご参照ください。
スコープ
OSS