阿里云OSS存储开发(一)
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);
- //使用代码...
- }
- }
- }
在上面代码中,变量 accessKeyId 与 accessKeySecret 是由系统分配给用户的,称为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存储开发(一)的更多相关文章
- 前端(react)上传到阿里云OSS存储 实例
需求背景 由于现有的后台管理系统,上传的视频越来越大,加上上传视频较慢,后端小哥提出直接从前端上传视频或者其他文件到阿里云OSS存储. 阿里云OSS 阿里云OSS文档介绍,这里不做过多赘述 安装 原本 ...
- php将图片存储在阿里云oss存储上
创建两个方法 1.上传方法 use OSS\OssClient; use think\Config; use OSS\Core\OssException; /** * 存储文件 * * @param ...
- 备份MySQL数据库并上传到阿里云OSS存储
1. 环境配置 要将本地文件上传到阿里云oss中, 必须使用阿里云提供的工具 ossutil, 有32位,也有64位的, Linux和Windows都有.具体可以到阿里云官网下载 官网及文档: htt ...
- 谷粒 | 10 | 阿里云OSS存储对象服务
阿里云OSS对象存储服务 准备工作 1.在service模块新建子模块service_oss 2.引入pom.xml文件中引入oss服务依赖 <dependencies> <!--a ...
- Laravel 使用阿里云 oss 存储对象
一.下载安装 composer require jacobcyl/ali-oss-storage 二.注册服务提供者 在config/app.php的providers下添加: //阿里云OSS对象存 ...
- Java项目接入阿里云OSS存储
需求背景 目前公司内部项目所支持的文件云存储方式还是公司内部项目组提供的方案,但在时间的考验之下,弊端显现,尤其是灾备切换过程中需要切换访问地址,这种操作不方便,更可能因为中间过程的失误导致资源不可用 ...
- 阿里云OSS存储
1.accessKeyId 与 accessKeySecret 是由系统分配给用户的,称为ID对,用于标识用户,为访问OSS做签名验证. 2.Bucket是OSS上的命名空间,相当于数据的容器,可以存 ...
- 阿里云OSS存储前端API上传(签名上传)
一.创建用户 在阿里云创建用户https://ram.console.aliyun.com/users,并勾选Open API 保存好信息,很重要,返回后就再也找不到了 新增授权(这里视个人情况,需要 ...
- jeesz分布式架构集成阿里云oss存储
1. 服务接口定义 /** * 文件上传 1:头像 2:显示图片 3:个人封面 :4:基础图片 * @param request * @param response * @param ...
随机推荐
- BZOJ 1070 修车
Description 同一时刻有\(N\)位车主带着他们的爱车来到了汽车维修中心.维修中心共有\(M\)位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这\(M\)位技术 ...
- codeforces C. Restore Graph
题意:构造一个有n个顶点,每个点度不超过k,然后给出每一个点到达一个定点的最短距离d数组,然后构造出这样的一个图: 思路:排序之后,有两个距离为0的或者没有直接输出-1,然后用两个游动下表,后面的与前 ...
- ALTER TABLE
•ALTER TABLE (表名) ADD (列名 数据类型); •ALTER TABLE (表名) MODIFY (列名 数据类型); •ALTER TABLE (表名) RENAME COLUMN ...
- AT24C512与AT24C512B的区别
前几日公司采购人员说现在AT24C512要停产了,替代型号为AT24C512B,因为公司产品中使用该器件较多,因此专门又研究了一下这两个芯片,发现还是有很多地方不同的. (1)AT24C512输入电压 ...
- VS2015接口智能提示少了异常信息 怎么破~
问题:我想让VS2015提示的时候也显示关于“异常”的批注信息,亲们 如何破? 下图是VS3013的提示 下图是VS2015的提示 下图是接口注释
- 剪花布条 - HDU 2087(简单KMP | 暴力)
分析:基础的练习............... ============================================================================ ...
- openresty安装lua和nginx相关
server{ listen ; server_name a.com; index index.php; root /usr/share/nginx/html; location / { if (!- ...
- Linux 和 Windows 下对long long的输出
以前一直用__int64来识别windows还是Linux,可是发现HDU好像不认 看到wzy用的UNIX可以. UNIX是Linux下定义的,具体是什么可以去百度. 那么就可以 #ifdef UNI ...
- [深入React] 1. 开发环境搭建
React环境其实很简单(不兼容ie8): <!DOCTYPE html> <html> <head> <title>React</title&g ...
- 滑动到底部或顶部响应的ScrollView实现
关于使用可见:滚动到底部或顶部响应的ScrollView使用 示例APK可从这些地址下载:Google Play, 360手机助手, 百度手机助手, 小米应用商店, 豌豆荚 两种实现方式的主要 ...