|
| 1 | +--- |
| 2 | +# C# SDK 使用指南 |
| 3 | + |
| 4 | + |
| 5 | +此 SDK 适用于 .NET4 及以上版本。 |
| 6 | + |
| 7 | +SDK下载地址:[https://github.com/qiniu/csharp-sdk](https://github.com/qiniu/csharp-sdk) |
| 8 | + |
| 9 | + |
| 10 | +**应用接入** |
| 11 | + |
| 12 | +- [获取 Access Key 和 Secret Key](#acc-appkey) |
| 13 | +- [签名认证](#acc-auth) |
| 14 | + |
| 15 | +**云存储接口** |
| 16 | + |
| 17 | +- [新建资源表](#rs-NewService) |
| 18 | +- [获得上传授权](#rs-PutAuth) |
| 19 | +- [上传文件](#rs-PutFile) |
| 20 | +- [获取已上传文件信息](#rs-Stat) |
| 21 | +- [下载文件](#rs-Get) |
| 22 | +- [发布公开资源](#rs-Publish) |
| 23 | +- [取消资源发布](#rs-Unpublish) |
| 24 | +- [删除已上传的文件](#rs-Delete) |
| 25 | +- [删除整张资源表](#rs-Drop) |
| 26 | + |
| 27 | +## 应用接入 |
| 28 | + |
| 29 | +<a name="acc-appkey"></a> |
| 30 | + |
| 31 | +### 1. 获取Access Key 和 Secret Key |
| 32 | + |
| 33 | +要接入七牛云存储,您需要拥有一对有效的 Access Key 和 Secret Key 用来进行签名认证。可以通过如下步骤获得: |
| 34 | + |
| 35 | +1. [开通七牛开发者帐号](https://dev.qiniutek.com/signup) |
| 36 | +2. [登录七牛开发者自助平台,查看 Access Key 和 Secret Key](https://dev.qiniutek.com/account/keys) 。 |
| 37 | + |
| 38 | +<a name="acc-auth"></a> |
| 39 | + |
| 40 | +### 2. 签名认证 |
| 41 | + |
| 42 | +首先,到 [https://github.com/qiniu/csharp-sdk](https://github.com/qiniu/csharp-sdk) 下载SDK源码。 |
| 43 | + |
| 44 | +然后,将 SDK 导入到您的 Visual C# 项目中,并编辑 QBox 目录下的 Config.cs 文件,确保其包含您从七牛开发者平台所获取的 [Access Key 和 Secret Key](#acc-appkey): |
| 45 | + |
| 46 | + public static string ACCESS_KEY = "<Please apply your access key>"; |
| 47 | + public static string SECRET_KEY = "<Dont send your secret key to anyone>"; |
| 48 | + |
| 49 | +在完成 Access Key 和 Secret Key 配置后,为了正常使用该 SDK 提供的功能,您还需要使用你获得的 Access Key 和 Secret Key 向七牛云存储服务器发出认证请求: |
| 50 | + |
| 51 | + DigestAuthClient conn = new DigestAuthClient(); |
| 52 | + |
| 53 | +请求成功后得到的 conn 即可用于您正常使用七牛云存储的一系列功能,接下来将一一介绍。 |
| 54 | + |
| 55 | +## 云存储接口 |
| 56 | + |
| 57 | +<a name="rs-NewService"></a> |
| 58 | + |
| 59 | +### 1. 新建资源表 |
| 60 | + |
| 61 | +新建资源表的意义在于,您可以将所有上传的资源分布式加密存储在七牛云存储服务端后还能保持相应的完整映射索引。 |
| 62 | + |
| 63 | + // 首先定义资源表名 |
| 64 | + string tableName = "tableName"; |
| 65 | + |
| 66 | + // 然后获得签名认证 |
| 67 | + DigestAuthClient conn = new DigestAuthClient(); |
| 68 | + |
| 69 | + // 签名认证完成后,即可使用该认证来新建资源表 |
| 70 | + RSService rs = new RSService(conn, tableName); |
| 71 | + |
| 72 | + |
| 73 | +<a name="rs-PutAuth"></a> |
| 74 | + |
| 75 | +### 2. 获得上传授权 |
| 76 | + |
| 77 | +客户端上传文件之前需要取得上传授权。所谓上传授权,就是获得一个可匿名直传的临时有效URL。实例代码如下: |
| 78 | + |
| 79 | + // 调用资源表对象的 putAuth() 方法来获得上传授权 |
| 80 | + PutAuthRet putAuthRet = rs.PutAuth(); |
| 81 | + |
| 82 | + |
| 83 | +如果请求成功,putAuthRet 会包含 Url 和 Expires 两个字段。Url 字段对应的值为匿名上传的临时URL,Expires 对应的值则是该临时URL的有效期。 |
| 84 | + |
| 85 | +<a name="rs-PutFile"></a> |
| 86 | + |
| 87 | +### 3. 上传文件 |
| 88 | + |
| 89 | +七牛云存储上传文件的方式分为服务器端上传和客户端上传两种。 |
| 90 | + |
| 91 | +##### 1. 服务器端上传 |
| 92 | + |
| 93 | +上传某个本地文件,示例代码如下: |
| 94 | + |
| 95 | + // 调用资源表对象的 PutFile() 方法进行文件上传 |
| 96 | + PutFileRet putFileRet = rs.PutFile(key, mimeType, filePath, customMeta); |
| 97 | + |
| 98 | +##### 2. 客户端上传 |
| 99 | + |
| 100 | +因为服务器端已经在之前进行过签名认证持有相应的安全凭证,因此可以直接进行上传。而由于客户端并不持有对RS的安全凭证,所以需要获取上传授权,从而得到一个有上传权限的URL,参见[获得上传授权](#rs-PutAuth)。在获得上传授权URL后,就可以开始上传文件了,示例代码如下: |
| 101 | + |
| 102 | + // 在客户端上传文件之前,需要获得上传授权,得到经过授权的临时URL |
| 103 | + PutAuthRet putAuthRet = rs.PutAuth(); |
| 104 | + uploadUrl = putAuthRet.Url; |
| 105 | + |
| 106 | + // 通过该临时 URL 进行文件上传 |
| 107 | + PutFileRet putFileRet = RSClient.PutFile(uploadUrl, tableName, key, mimeType, |
| 108 | + filePath, customMeta, callbackParam); |
| 109 | + |
| 110 | +<a name="rs-Stat"></a> |
| 111 | + |
| 112 | +### 4. 获取已上传文件信息 |
| 113 | + |
| 114 | +您可以调用资源表对象的 Stat() 方法并传入一个 Key 来获取指定文件的相关信息。 |
| 115 | + |
| 116 | + // 获取资源表中特定文件信息 |
| 117 | + StatRet statRet = rs.Stat(key); |
| 118 | + |
| 119 | +如果请求成功,得到的 statRet 将会包含如下几个字段: |
| 120 | + |
| 121 | + Hash: <FileETag> |
| 122 | + FileSize: <FileSize> |
| 123 | + PutTime: <PutTime> |
| 124 | + MimeType: <MimeType> |
| 125 | + |
| 126 | +<a name="rs-Get"></a> |
| 127 | + |
| 128 | +### 5. 下载文件 |
| 129 | + |
| 130 | +要下载一个文件,首先需要取得下载授权,所谓下载授权,就是取得一个临时合法有效的下载链接,只需传入相应的文件 Key 和下载要保存的文件名作为参数即可,示例代码如下: |
| 131 | + |
| 132 | + // 下载资源表中的特定文件 |
| 133 | + GetRet getRet = rs.Get(key, filename); |
| 134 | + GetRet getRet = rs.GetIfNotModified(key, filename, baseHash); |
| 135 | + |
| 136 | +返回的 getRet 包含如下字段: |
| 137 | + |
| 138 | + Url: <DownloadURL> # 获取文件内容的实际下载地址 |
| 139 | + Hash: <FileETag> |
| 140 | + FileSize: <FileSize> |
| 141 | + MimeType: <MimeType> |
| 142 | + |
| 143 | +方法 GetIfNotModified 与 Get 的不同之处在于多了一个 baseHash 参数。这个参数是一个 SHA-1 值,用于判断所指向的文件内容是否被改动。只有在内容没有被变动时才会返回该文件的下载URL。 |
| 144 | + |
| 145 | +<a name="rs-Publish"></a> |
| 146 | + |
| 147 | +### 6. 发布公开资源 |
| 148 | + |
| 149 | +使用七牛云存储提供的资源发布功能,您可以将一个资源表里边的所有文件以静态链接可访问的方式公开发布到您自己的域名下。 |
| 150 | + |
| 151 | +要公开发布一个资源表里边的所有文件,只需调用该资源表对象的 Publish() 方法并传入域名作为参数即可。如下示例: |
| 152 | + |
| 153 | + // 公开发布某个资源表 |
| 154 | + PublishRet publishRet = rs.Publish(DomainName); |
| 155 | + |
| 156 | +<a name="rs-Unpublish"></a> |
| 157 | + |
| 158 | +### 7. 取消资源发布 |
| 159 | + |
| 160 | +调用资源表对象的 Unpublish() 方法可取消该资源表内所有文件的静态外链。 |
| 161 | + |
| 162 | + // 取消公开发布某个资源表 |
| 163 | + PublishRet unpublishRet = rs.Unpublish(DomainName); |
| 164 | + |
| 165 | +<a name="rs-Delete"></a> |
| 166 | + |
| 167 | +### 8. 删除已上传的文件 |
| 168 | + |
| 169 | +要删除指定的文件,只需调用资源表对象的 Delete() 方法并传入文件 key 作为参数即可。如下示例代码: |
| 170 | + |
| 171 | + // 删除资源表中的某个文件 |
| 172 | + DeleteRet deleteRet = rs.Delete(key); |
| 173 | + |
| 174 | +<a name="rs-Drop"></a> |
| 175 | + |
| 176 | +### 9. 删除整张资源表 |
| 177 | + |
| 178 | +要删除整个资源表及该表里边的所有文件,可以调用资源表对象的 Drop() 方法。 |
| 179 | +需慎重,这会删除整个表及其所有文件。如下示例代码: |
| 180 | + |
| 181 | + // 删除整个资源表 |
| 182 | + DropRet dropRet = rs.Drop(); |
0 commit comments