阿里云OSS NET SDK 引用示范程序
1.引入SDK bin文件,下载地址:https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/internal/oss/0.0.4/assets/sdk/OSS_SDK_DOTNET_2_3_0.zip?spm=5176.doc32085.2.3.dH1Os6&file=OSS_SDK_DOTNET_2_3_0.zip
2.源代码:
using System;
using System.Collections.Generic;
using Aliyun.OSS;
namespace TaoYe
{
    /// <summary>
    /// 快速入门示例程序   
    /// </summary>
    public static class SimpleSamples
    {
        private const string _accessKeyId = "<your AccessKeyId>";
        private const string _accessKeySecret = "<your AccessKeySecret>";
        private const string _endpoint = "<valid host name>";
        private const string _bucketName = "<your bucket name>";
        private const string _key = "<your key>";
        private const string _fileToUpload = "<your local file path>";
        private static OssClient _client = new OssClient(_endpoint, _accessKeyId, _accessKeySecret);
        public static void Main(string[] args)
        {
            CreateBucket();
            SetBucketAcl();
            GetBucketAcl();
            PutObject();
            ListObjects();
            GetObject();
            DeleteObject();
            // DeleteBucket();
            Console.WriteLine("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
        /// <summary>
        /// 创建一个新的存储空间
        /// </summary>
        private static void CreateBucket()
        {
            try
            {
                var result = _client.CreateBucket(_bucketName);
                Console.WriteLine("创建存储空间{0}成功", result.Name);
            }
            catch (Exception ex)
            {
                Console.WriteLine("创建存储空间失败. 原因:{0}", ex.Message);
            }
        }
        /// <summary>
        /// 上传一个新文件
        /// </summary>
        private static void PutObject()
        {
            try
            {
                _client.PutObject(_bucketName, _key, _fileToUpload);
                Console.WriteLine("上传文件成功");
            }
            catch (Exception ex)
            {
                Console.WriteLine("上传文件失败.原因: {0}", ex.Message);
            }
        }
        /// <summary>
        /// 列出存储空间内的所有文件
        /// </summary>
        private static void ListObjects()
        {
            try
            {
                var keys = new List<string>();
                ObjectListing result = null;
                string nextMarker = string.Empty;
                /// 由于ListObjects每次最多返回100个结果,所以,这里需要循环去获取,直到返回结果中IsTruncated为false
                do
                {
                    var listObjectsRequest = new ListObjectsRequest(_bucketName)
                    {
                        Marker = nextMarker,
                        MaxKeys = 100
                    };
                    result = _client.ListObjects(listObjectsRequest);
                    foreach (var summary in result.ObjectSummaries)
                    {
                        keys.Add(summary.Key);
                    }
                    nextMarker = result.NextMarker;
                } while (result.IsTruncated);
                Console.WriteLine("列出存储空间中的文件");
                foreach (var key in keys)
                {
                    Console.WriteLine("文件名称:{0}", key);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("列出存储空间中的文件失败.原因: {0}", ex.Message);
            }
        }
        /// <summary>
        /// 下载文件
        /// </summary>
        private static void GetObject()
        {
            try
            {
                var result = _client.GetObject(_bucketName, _key);
                Console.WriteLine("下载的文件成功,名称是:{0},长度:{1}", result.Key, result.Metadata.ContentLength);
            }
            catch (Exception ex)
            {
                Console.WriteLine("下载文件失败.原因:{0}", ex.Message);
            }
        }
        /// <summary>
        /// 删除文件
        /// </summary>
        private static void DeleteObject()
        {
            try
            {
                _client.DeleteObject(_bucketName, _key);
                Console.WriteLine("删除文件成功");
            }
            catch (Exception ex)
            {
                Console.WriteLine("删除文件失败.原因: {0}", ex.Message);
            }
        }
        /// <summary>
        /// 获取存储空间ACL的值
        /// </summary>
        private static void GetBucketAcl()
        {
            try
            {
                var result = _client.GetBucketAcl(_bucketName);
                foreach (var grant in result.Grants)
                {
                    Console.WriteLine("获取存储空间权限成功,当前权限:{0}", grant.Permission.ToString());
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("获取存储空间权限失败.原因: {0}", ex.Message);
            }
        }
        /// <summary>
        /// 设置存储空间ACL的值
        /// </summary>
        private static void SetBucketAcl()
        {
            try
            {
                _client.SetBucketAcl(_bucketName, CannedAccessControlList.PublicRead);
                Console.WriteLine("设置存储空间权限成功");
            }
            catch (Exception ex)
            {
                Console.WriteLine("设置存储空间权限失败. 原因:{0}", ex.Message);
            }
        }
        /// <summary>
        /// 删除存储空间
        /// </summary>
        private static void DeleteBucket()
        {
            try
            {
                _client.DeleteBucket(_bucketName);
                Console.WriteLine("删除存储空间成功");
            }
            catch (Exception ex)
            {
                Console.WriteLine("删除存储空间失败", ex.Message);
            }
        }
    }
}
关于:
https://help.aliyun.com/document_detail/32085.html?spm=5176.doc32086.6.268.ahRddG (API文档的原文地址)
_accessKeyId 和_accessKeySecret 是管理控制台里的key-value(需要注意别暴露在外面)
_endpoint 是域名,OSS控制台里能绑定自己的域名,没有自己的域名也无妨,默认是阿里云提供的域名地址
_bucketName 是OSS里面的文件夹名
_key是需要存储的文件名_fileToUpload则是文件路径
以上,能实现简单的OSS使用。    阿里云OSS NET SDK 引用示范程序的更多相关文章
- 使用visual studio 2015调用阿里云oss .net sdk 2.2的putobject接口抛出outofmemory异常
		问题描述: 使用阿里云oss .net sdk 2.2版本,使用putobject接口上传文件时,抛出outofmemory异常. 原因分析: 上传时,用于准备上传的数据缓冲区内存分配失败.与应用软件 ... 
- thinkphp使用阿里云OSS最新SDK,文件部署
		这文章是建立在你已经注册号阿里云的OSS,和创建好Bucket前提下: 其实阿里云的帮助与文档写的很详细,这里只说一下源码方式 1.phpsdk下载地址(摘自阿里云OSS的帮助与文档)(也有我自己下载 ... 
- 图片的URL上传至阿里云OSS操作(微信小程序二维码返回的二进制上传到OSS)
		当我们从网络中获取一个URL的图片我们要存储到本地或者是私有的云时,我们可以这样操作 把url中的图片文件下载到本地(或者上传到私有云中) public String uploadUrlToOss ... 
- 阿里云oss上传图片
		1.首先我们要下载阿里云oss的sdk包:(可以下载原版的,改过的通用版在本人的百度云,嘎嘎嘎~) 2.下载好之后放到项目文件目录里面 3.要在需要的控制器引用这个sdk文件例如: include(& ... 
- Windows环境下用C#编程将文件上传至阿里云OSS笔记
		Windows环境下用C#编程将文件上传至阿里云OSS笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/detai ... 
- laravel下使用阿里云oss上传图片
		对小公司而言,使用阿里云oss比直接买硬盘要划算的多,不管从存储性价比上还是从网速负载上.最近因为公司的项目有比较大的图片存储访问需求,所以决定使用阿里云的oss. 在研究了一下以后,摆着不自己造轮子 ... 
- 构建基于阿里云OSS文件上传服务
		转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ... 
- iOS使用阿里云OSS对象存储 (SDK 2.1.1)
		最近项目中用到了阿里云OSS对象存储,用来存储APP中图片.音频等一些数据.但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所 ... 
- 快速上手阿里云oss SDK
		使用阿里云oss SDK 依赖安装: pip install oss2 pip install aliyun-python-sdk-sts 版本最好是 2.7.5 或以上 如果要开启 crc64 循环 ... 
随机推荐
- Effective Java 24 Eliminate unchecked warnings
			Note Eliminate every unchecked warning that you can. Set<Lark> exaltation = new HashSet(); The ... 
- Linux下shell颜色配置
			颜色配置涉及以下几个地方(本人常用的):命令提示符,文件及目录名显示,echo -e命令 1.颜色值分为前景色和背景色,颜色码值对应关系如下: Front Back Color 黑 红 绿 黄(棕) ... 
- spring+mybatis多数据源切换
			在实际的公司项目中,很可能会遇到一个问题就是,一个java项目,但是项目中涉及两个数据库,这两个数据库还在不同IP的机子上. 遇到这种情况的时候,我们有两个选择 1.不走spring的aop方式,直接 ... 
- C++杂谈(一)const限定符与const指针
			const限定符 c++有了新的const关键字,用来定义常变量,可以替C语言中的#define.关于const限定符,有以下需要注意: 1.创建后值不再改变 2.作用范围在文件内有效 3.添加ext ... 
- 虚拟机centos6.5 --设置主机名
			vi /etc/sysconfig/network #修改HOSTNAME后面的值,机器名 vi /etc/hosts #设置ip和机器名的对应关系 192.168.12.232 master 192 ... 
- git的使用(二)
			1.几个概念 (1)工作区指当前编辑代码的地方,是.git仓库所在的文件夹. (2)暂存区是一个概念,并不存在这个区. (3)仓库是.git文件夹,是运行git init命令时自动创建的,默认是隐藏的 ... 
- Network client/server
			<Beginning Linux Programming_4th> chapter 15 Sockets 1 A simple local client/server 1) clie ... 
- JMeter学习(三十二)属性和变量
			一.Jmeter中的属性: 1.JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性 2.JMeter属性在测试脚本的任何地方都是可见的(全局),通常 ... 
- java 20 - 4 IO流概述和一个简单例子解析
			IO流的分类: 流向: 输入流 读取数据 输出流 写出数据 数据类型: 字节流 字节输入流 读取数据 InputStream 字节输出流 写出数据 OutputStream 字符流 字符 ... 
- 啊D工具语句 适合Access和Mssql注入
			啊D注入工具中使用的SQL注入语句 爆user )) )= | ***** ?Id)) : ?Id : Id 检查SA权限:)))) 爆当前库: )) -- 检查是否为mssql数据库:and exi ... 
