阿里云OSS搭建移动应用直传服务的.Net C#示例
OSS好几个都没有.Net示例,只有SDK
于是我就拿Java改成C#代码;使用前先去Nuget包管理器下载Aliyun.Acs.Core还有Aliyun.Acs.Sts;
在安装这个两个包的时候安装不了,可能因为是.Net Core的原因吧。
Nuget安装方式安装不了的,先去
https://github.com/aliyun/aliyun-openapi-net-sdk
下载这两个项目然后生成引用到自己项目中。
安装后复制下面的代码即可,记得要把bucketName改成自己bucket的名字
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Sts.Model.V20150401;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Core; namespace Test
{
public class OssServer
{
private const string REGION_CN_HANGZHOU = "cn-hangzhou";
private const string STS_API_VERSION = "2015-04-01";
private const string AccessKeyID = "****你的AccessKeyID****";
private const string AccessKeySecret = "****你的AccessKeySecret****";
private const string RoleArn = "****你的RoleArn****";
private const int TokenExpireTime = ;
//这里是权限配置,请参考oss的文档
private const string PolicyFile = @"{
""Statement"": [
{
""Action"": [
""oss:PutObject""
],
""Effect"": ""Allow"",
""Resource"": [""acs:oss:*:*:bucketName/*"", ""acs:oss:*:*:bucketName""]
}
],
""Version"": ""1""
}";
private AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret, String roleArn,
String roleSessionName, String policy, ProtocolType protocolType, long durationSeconds)
{
try
{
// 创建一个 Aliyun Acs Client, 用于发起 OpenAPI 请求
IClientProfile profile = DefaultProfile.GetProfile(REGION_CN_HANGZHOU, accessKeyId, accessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(profile); // 创建一个 AssumeRoleRequest 并设置请求参数
AssumeRoleRequest request = new AssumeRoleRequest();
//request.Version = STS_API_VERSION;
request.Method = MethodType.POST;
//request.Protocol = protocolType; request.RoleArn = roleArn;
request.RoleSessionName = roleSessionName;
request.Policy = policy;
request.DurationSeconds = durationSeconds; // 发起请求,并得到response
AssumeRoleResponse response = client.GetAcsResponse(request); return response;
}
catch (ClientException e)
{
throw e;
}
} public StsTokenModel GetToken()
{
// 只有 RAM用户(子账号)才能调用 AssumeRole 接口
// 阿里云主账号的AccessKeys不能用于发起AssumeRole请求
// 请首先在RAM控制台创建一个RAM用户,并为这个用户创建AccessKeys // RoleArn 需要在 RAM 控制台上获取
// RoleSessionName 是临时Token的会话名称,自己指定用于标识你的用户,主要用于审计,或者用于区分Token颁发给谁
// 但是注意RoleSessionName的长度和规则,不要有空格,只能有'-' '_' 字母和数字等字符
// 具体规则请参考API文档中的格式要求
string roleSessionName = "alice-001"; // 必须为 HTTPS
try
{
AssumeRoleResponse stsResponse = assumeRole(AccessKeyID, AccessKeySecret, RoleArn, roleSessionName,
PolicyFile, ProtocolType.HTTPS, TokenExpireTime); return new StsTokenModel()
{
status = ,
AccessKeyId = stsResponse.Credentials.AccessKeyId,
AccessKeySecret = stsResponse.Credentials.AccessKeySecret,
Expiration = stsResponse.Credentials.Expiration,
Security = stsResponse.Credentials.SecurityToken
}; }
catch (ClientException e)
{
return new StsTokenModel() { status = Convert.ToInt32(e.ErrorCode) };
}
}
}
}
GetToken()函数返回的STS凭据数据模型
public class StsTokenModel
{
public int status { get; set; } public string AccessKeyId { get; set; } public string AccessKeySecret { get; set; } public string Security { get; set; } public string Expiration { get; set; }
}
阿里云OSS搭建移动应用直传服务的.Net C#示例的更多相关文章
- 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程
在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...
- ECS上nginx搭建反向代理通过内网访问阿里云OSS服务
对于付不起钱的小伙计,为了给公司省钱,想尽一切招数.今天就来分享一个使用阿里云OSS存储搭配CDN使用的网站服务器部署方法. 简介 阿里云OSS 阿里云提供的一种文件存储方案,和我们以前接触的百度云B ...
- 记一次阿里云oss文件上传服务假死
引言 记得以前刚开始学习web项目的时候,经常涉及到需要上传图片啥的,那时候都是把图片上传到当前项目文件夹下面,每次项目一重启图片就丢了.虽然可以通过修改/tomcat/conf/server.xml ...
- Python使用阿里云OSS服务
Python使用阿里云OSS服务 前言: 在远程搭建了一个平台,通过改远程平台进行数据的采集,需要将数据内容传送至本地进行处理:为了实现该功能,考虑了阿里云的OSS对象储存的服务. 40G包月只需1元 ...
- angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)
2015-10-26 angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前 ...
- ECStore图片存储采用阿里云OSS(图片存储)服务
主要功能:ECStore图片存储采用阿里云OSS(图片存储)服务 适用版本:ECStore 授权方式:授权域名使用,付费插件 联系方式: QQ 275553385 mail: jimingson ...
- 物联网架构成长之路(18)-接阿里云OSS服务
1.申请/购买OSS服务 在阿里云上申请/购买OSS服务, 然后在会得AccessKeyID,AccessKeySecret,bucketName 这三个东西 2.增删改查 在pom.xml文件上增加 ...
- 构建基于阿里云OSS文件上传服务
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...
- 谷粒 | 10 | 阿里云OSS存储对象服务
阿里云OSS对象存储服务 准备工作 1.在service模块新建子模块service_oss 2.引入pom.xml文件中引入oss服务依赖 <dependencies> <!--a ...
随机推荐
- 优化 html 标签 为何能用HTML/CSS解决的问题就不要使用JS?
优化 html 标签 2018年05月11日 08:56:24 阅读数:19 有些人写页面会走向一个极端,几乎页面所有的标签都用div,究其原因,用div有很多好处,一个是div没有默认样式,不会有m ...
- shell网络管理
背景知识 联网就是通过网络将主机进行互联并采用不同的规范配置网络上的节点.我们以 TCP/IP 作为网络栈,所有的操作都是基于它进行的.网络是计算机系统中重要的部分.连接在网络上的每个节点都分配了一个 ...
- 小幻美图 API
『不忘初心,方得始终.』 小幻美图 API 更新:2015.03.29 目前提供的API共有10种! 必应各种今日获取API共4种! 本站收录图片获取API共4种! 网络图片尺寸修改API共1枚! 百 ...
- Serializable 接口与 Java 序列化与反序列化
0. 序列化的意义 从内存到本地即为本地化或者在网络中进行传输,或叫序列化,持久化. 某 Java 类实现 Serializable 接口的目的是为了可持久化(简单理解为本地化),比如网络传输或本地存 ...
- bzoj 1898
1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1197 Solved: 661[Submit][S ...
- 修复win7的启动引导
自己的电脑上本身是win7,为了试验openstack,决定装个ubuntu server,过程也不太懂,一直卡在分区不敢贸然前进,反复了几次,终于导致我进不了原来的win7,原因不明! 当时就慌了, ...
- HDU 5512 Pagodas (数论)
题意:给了初始的集合{a, b},然后取集合里的两个元素进行加或者减的操作,生成新的元素.问最后最多能生成多少个元素.问答案的奇偶性. 析:多先写几个你就会发现,答案就是 n / gcd(a, b). ...
- Ruby Proc类
Proc类 生成 Proc.new() {...} proc {...} 注,代码块参数带用 |..., *array| 获得后续参数的数组 lamda {...} call呼出时会 ...
- bzoj 1497 [NOI2006]最大获利【最大权闭合子图+最小割】
不要被5s时限和50000点数吓倒!大胆网络流!我一个5w级别的dinic只跑了1s+! 看起来没有最大权闭合子图的特征--限制,实际上还是有的. 我们需要把中转站看成负权点,把p看成点权,把客户看成 ...
- bzoj 3028: 食物【生成函数】
承德汉堡:\( 1+x^2+x^4+...=\frac{1}{1-x^2} \) 可乐:\(1+x \) 鸡腿:\( 1+x+x^2=\frac{x^3-1}{x-1} \) 蜜桃多:\( x+x^3 ...