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. Web工程软件升级之数据库升级(二)

    升级前检查 1. 用户是否存在 awk -F: '{if($1 == "xxx") print $1}' /ect/passwd 用户名 awk -F: '{if($1 == &q ...

  2. Computational Methods in Bayesian Analysis

    Computational Methods in Bayesian Analysis Computational Methods in Bayesian Analysis  [Markov chain ...

  3. ibatis动态语句加and 和不加and

    <select id="queryGoodsGroupCodeName" parameterClass="String" resultClass=&quo ...

  4. 几个国外FMX网站 good

    FireMonkey X –  Amazing overview of FireMonkey FMX Feeds – All your FireMonkey news in one place FMX ...

  5. Java中的属性与字段的区别

    Java中属性和字段的区别  Java中的属性,通常可以理解为其属名性时根据get和set方法名得出的. 其规则是:去掉get或set后其剩余的字符串,如果第二个字母是小写的,则把第一个字母也变成小写 ...

  6. mysql处理字符串的两个绝招:substring_index,concat

    mysql处理字符串的两个绝招:substring_index,concat 最近老是碰到要处理数据库中字符串的处理,发现用来用去也就是这两个函数: 1.substring_index(str,del ...

  7. java学习之面向对象概念

    思考的两种方式: 举例: 把大象放到冰箱里 一.面向过程 :[打开冰箱->把大象放里面->关上冰箱门]面向过程注重的是过程,也就是(动作[函数]),然后按照动作依次去执行就好了. 代表语言 ...

  8. Farm Irrigation(并查集)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  9. 动态规划 HDU 1176

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  10. 工作中常用的QTP操作Excel函数

    前言 本文只是对工作中常用的EOM相关函数的整理,并不是要写个大而全的操作手册,如果想对EOM有更多的了解可以参考QTP的帮助文档或查看QTP安装目录\CodeSamplesPlus\UsingExc ...