OSS签名Header实现Demo(C#)
概述
OSS的集成上传和下载提供了SDK可以直接使用,但实际使用中一些用户受限环境或者设备限制需要使用api方式来实现上传和下载,本文以PutObject接口为例,提供了C#实现的demo。
注:建议优先使用OSS提供SDK,本文提供的只是签名实现上传demo,实际使用中需要结合业务来进行改动代码
详细信息
PutObject实现demo(visual studio 2017,NET Framework4.0)
using System; using System.Security.Cryptography; using System.Text; using System.Net; using System.IO; using System.Reflection; namespace Aliyun.OSS.Samples { class Program { //您的AccessKey public static string AccessKey = "xx"; //您的 AccessKeySecret public static string AccessKeySecret = "xx"; //bucket所在的endpoint public static string Endpoint = "oss-cn-hangzhou.aliyuncs.com"; public static string BucketName = "xx"; public static string objectName = "mytest/1.txt"; public static string HmacSha1Sign(string secret, string strOrgData) { var hmacsha1 = new HMACSHA1(Encoding.UTF8.GetBytes(secret)); var dataBuffer = Encoding.UTF8.GetBytes(strOrgData); var hashBytes = hmacsha1.ComputeHash(dataBuffer); return 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(data); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "PUT"; request.Timeout = 150000; request.Headers.Add("Authorization", "OSS " + AccessKey + ":" + sign); CallPrivateMethod(request, "SetSpecialHeaders", "Date", time1); request.ContentType = contentType; Stream requestStream = null; string 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 (Exception) { Console.WriteLine("error"); } finally { request = null; requestStream = null; } return responseStr; } public static string ToGMTString() { return DateTime.Now.ToUniversalTime().ToString("r"); } public static void CallPrivateMethod(object instance, string name, params object[] param) { BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic; Type type = instance.GetType(); MethodInfo method = type.GetMethod(name, flag); method.Invoke(instance, 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; string signature = HmacSha1Sign(AccessKeySecret, str); string url = "http://" + BucketName + "." + Endpoint + "/" + objectName; string data = "{ \"key\":\"this is a oss's test\"}"; string result = HttpRequest(url, data, signature, content_type, timeGmt); Console.WriteLine("requestId: " + result); } } }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
OSS签名Header实现Demo(Python)
概述 OSS的集成上传和下载提供了SDK可以直接使用,但实际使用中一些用户受限环境或者设备限制需要使用api方式来实现上传和下载,本文以PutObject接口为例,提供了python实现的demo。注:建议优先使用OSS提供SDK,本文提供的只是签名实现上传demo,实际使用中需要结合业务来进行改动代码 详细信息 PutObject实现Demo(测试环境python2.7): # -*- coding: utf-8 -*- import base64 import hmac import sha import urllib2 from datetime import datetime accesskey = '您的accesskey'; accesskeysecret = '您的AccesskeySecret' endpoint='oss-cn-hangzhou.aliyuncs.com' bucket='您的bucket名称' #您的上传文件路径 object='mytest/test.png' GMT_FORMAT = '%a, %d %b %Y %H:%M:%S GMT' tim...
- 下一篇
OSS签名Header实现Demo(PHP)
概述 OSS的集成上传和下载提供了SDK可以直接使用,但实际使用中一些用户受限环境或者设备限制需要使用api方式来实现上传和下载,本文以PutObject接口为例,提供了PHP实现的demo。注:建议优先使用OSS提供SDK,本文提供的只是签名实现上传demo,实际使用中需要结合业务来进行改动代码 详细信息 PutObject实现Demo(测试环境php5.6.30): <?php function curlput($url,$data,$method='PUT',$bucket,$object,$accesskey ,$accesskeySecret){ $time = gmdate ("D, d M Y H:i:s T"); $str = "PUT\n\n"."application/json\n".$time."\n/".$bucket."/".$object; //echo($str); $signature = base64_encode(hash_hmac("sha1", $str, $accesskeySecret, true)); //echo($time); /...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音