Step 1. 初始化一个OSSClient

OSSClient是与OSS服务交互的客户端,SDK的OSS操作都是通过OSSClient完成的。

下面代码新建了一个OSSClient:

using Aliyun.OpenServices.OpenStorageService;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace AliyunTest
{
class Program
{
static readonly string accessKeyId = "AccessKeyId";
static readonly string accessKeySecret = "AccessKeySecret";
//关于这个endPoint,可以参考:http://bbs.aliyun.com/read/149100.html?spm=5176.7189909.0.0.YiwiFw
static readonly string endPoint = "http://oss-cn-beijing.aliyuncs.com"; static void Main(string[] args)
{
//初始化 OSSClient
OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret); //使用代码...
}
}
}

在上面代码中,变量 accessKeyIdaccessKeySecret 是由系统分配给用户的,称为ID对,用于标识用户,为访问OSS做签名验证。

Step 2. 新建Bucket

Bucket是OSS上的命名空间,相当于数据的容器,可以存储若干数据实体(Object)。

你可以按照下面的代码新建一个Bucket:

        /// <summary>
/// 新建存储对象容器Bucket
/// </summary>
/// <param name="bucketName">容器名称</param>
void CreateBucket(string bucketName)
{
//初始化 OSSClient
OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret); // 新建一个Bucket
var bucket = ossClient.CreateBucket(bucketName); Console.WriteLine(bucket.CreationDate);
}

由于Bucket的名字是全局唯一的,所以尽量保证你的 bucketName 不与别人重复。

其实也可以在阿里云的OSS管理控制台创建。

Step 3. 上传Object

Object是OSS中最基本的数据单元,你可以把它简单地理解为文件,用下面代码可以实现一个Object的上传:

        /// <summary>
/// 进行对象存储
/// </summary>
/// <param name="bucketName">bucket名称</param>
void PutObject(string bucketName)
{
//初始化 OSSClient
OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret); //定义文件流
var objStream = new System.IO.FileStream("D:\\example\\test.jpg", System.IO.FileMode.OpenOrCreate);
//定义 object 描述
var objMetadata = new ObjectMetadata();
var objKey = "test.jpg"; //执行 put 请求,并且返回对象的MD5摘要。
var putResult = ossClient.PutObject(bucketName, objKey, objStream, objMetadata); Console.WriteLine(putResult.ETag);
}

Object通过InputStream的形式上传到OSS中。在上面的例子里我们可以看出,每上传一个Object,都需要指定和Object关 联的ObjectMetadata。ObjectMetaData是用户对该object的描述,由一系列name-value对组成;其中 ContentLength是必须设置的,以便SDK可以正确识别上传Object的大小。

Put Object请求处理成功后,OSS会将收到文件的MD5值放在返回结果的ETag中。用户可以根据ETag检验上传的文件与本地的是否一致。

Step 4. 获取指定Objec

        /// <summary>
/// 获取一个存储对象
/// </summary>
/// <param name="bucketName">bucket名称</param>
/// <param name="objKey">对象标识名称</param>
void GetObject(string bucketName, string objKey)
{
//初始化 OSSClient
OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret); //获取对象
var obj = ossClient.GetObject(bucketName, objKey);
//获取Object的输入流
var objStream = obj.Content; //怎么处理数据流,您看着办吧。
//... //最后关闭数据流。
objStream.Close();
}

最终文件怎么访问呢?你猜(上阿里云的管理控制台看看你就知道了)...

阿里云OSS存储开发(一)的更多相关文章

  1. 前端(react)上传到阿里云OSS存储 实例

    需求背景 由于现有的后台管理系统,上传的视频越来越大,加上上传视频较慢,后端小哥提出直接从前端上传视频或者其他文件到阿里云OSS存储. 阿里云OSS 阿里云OSS文档介绍,这里不做过多赘述 安装 原本 ...

  2. php将图片存储在阿里云oss存储上

    创建两个方法 1.上传方法 use OSS\OssClient; use think\Config; use OSS\Core\OssException; /** * 存储文件 * * @param ...

  3. 备份MySQL数据库并上传到阿里云OSS存储

    1. 环境配置 要将本地文件上传到阿里云oss中, 必须使用阿里云提供的工具 ossutil, 有32位,也有64位的, Linux和Windows都有.具体可以到阿里云官网下载 官网及文档: htt ...

  4. 谷粒 | 10 | 阿里云OSS存储对象服务

    阿里云OSS对象存储服务 准备工作 1.在service模块新建子模块service_oss 2.引入pom.xml文件中引入oss服务依赖 <dependencies> <!--a ...

  5. Laravel 使用阿里云 oss 存储对象

    一.下载安装 composer require jacobcyl/ali-oss-storage 二.注册服务提供者 在config/app.php的providers下添加: //阿里云OSS对象存 ...

  6. Java项目接入阿里云OSS存储

    需求背景 目前公司内部项目所支持的文件云存储方式还是公司内部项目组提供的方案,但在时间的考验之下,弊端显现,尤其是灾备切换过程中需要切换访问地址,这种操作不方便,更可能因为中间过程的失误导致资源不可用 ...

  7. 阿里云OSS存储

    1.accessKeyId 与 accessKeySecret 是由系统分配给用户的,称为ID对,用于标识用户,为访问OSS做签名验证. 2.Bucket是OSS上的命名空间,相当于数据的容器,可以存 ...

  8. 阿里云OSS存储前端API上传(签名上传)

    一.创建用户 在阿里云创建用户https://ram.console.aliyun.com/users,并勾选Open API 保存好信息,很重要,返回后就再也找不到了 新增授权(这里视个人情况,需要 ...

  9. jeesz分布式架构集成阿里云oss存储

      1. 服务接口定义 /**  * 文件上传  1:头像 2:显示图片 3:个人封面  :4:基础图片   * @param request  * @param response  * @param ...

随机推荐

  1. fread遇到1A则读取停止,发现是1A是文件截止符

    fread遇到1A则读取停止,发现是1A是文件截止符 按二进制来读来则可以完全读取

  2. 信号槽的被连接几次,就会执行几次(有空要仔细研究connect的各种用法)

    所以connect一定要做一次连接即可.否则点击一下按钮,会不断弹出多次窗口. 另外,也不用管这个对象有没有被实例化,connect都不会出错.

  3. SQL SERVER大数据分页

    select * from (select rownum r, a.* from (select * from  table_name order by ndatetime desc ) a wher ...

  4. (转载)URL与URI的区别

    (转载)http://blog.csdn.net/eagle51998/article/details/372052 1  URL(Uniform Resoure Locator:统一资源定位器)是W ...

  5. 数据结构(线段树):CodeForces 85D Sum of Medians

    D. Sum of Medians time limit per test 3 seconds memory limit per test 256 megabytes input standard i ...

  6. 数据结构(并查集):COGS 260. [NOI2002] 银河英雄传说

    260. [NOI2002] 银河英雄传说 ★★☆   输入文件:galaxy.in   输出文件:galaxy.out   简单对比时间限制:5 s   内存限制:128 MB [问题描述] 公元五 ...

  7. 【图论】【宽搜】【染色】NCPC 2014 A Ades

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1787 题目大意: N个点M条无向边(N,M<=200000),一个节点只能有一个 ...

  8. 修改MySQL的递增的起始值

    在mysql中,有时候需要把递增的值初始化为1(你也可以修改成其它起始值): alter table table_name auto_increment=; 不要设置为0......

  9. 高效算法——J 中途相遇法,求和

    ---恢复内容开始--- J - 中途相遇法 Time Limit:9000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Su ...

  10. 数据结构——foodfill 八连块问题

    Description Due to recent rains, water has pooled in various places in Farmer John's field, which is ...