.NET SDK
<p> </p>
<p>简介</p>
<p>.NET SDK便于.NET平台开发者快速对接使用OBS对象存储服务。在使用之前,您需要确保已经是平安云用户,并且开通了OBS服务。如果您还没有开通或者还不了解平安云 OBS 服务,请登录 <a href="/ssr/products/OBS" target="_blank">OBS产品主页 </a>进行了解。</p>
<p>SDK下载</p>
<p>.NET SDK 开发包最新版本<a href="https://pcp-portal-sca.obs-cn-shenzhen.pinganyun.com/pcp-portal-sca.obs-cn-shenzhen.pinganyun.com/sdk%2Fobs-.NET-sdk-1.0.0.zip?response-content-disposition=attachment%3Bfilename%3Dobs-.NET-sdk-1.0.0.zip" target="_blank"> v1.0.0</a></p>
<p>API概览</p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>API</p>
</th>
<th>
<p>描述</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>PutObject</p>
</td>
<td>
<p>OBS .NET SDK 提供了多种文件上传接口,可以通过以下方式上传文件:</p>
<ul>
<li>文件上传</li>
<li>流式上传</li>
</ul>
</td>
</tr>
<tr>
<td>
<p>GetObject</p>
</td>
<td>
<p>文件下载</p>
</td>
</tr>
<tr>
<td>
<p>GetDownloadUrl</p>
</td>
<td>
<p>获取下载链接</p>
</td>
</tr>
<tr>
<td>
<p>DeleteObject</p>
</td>
<td>
<p>删除文件</p>
</td>
</tr>
</tbody>
</table>
<p>API描述</p>
<p><strong>(1)初始化</strong></p>
<p><strong>接口描述</strong></p>
<p>初始化调用OBS服务的对象ObsService,提供三个入参的构造方法。ObsService提供上传、下载、上传文件基本操作。</p>
<p>您需要接入平安云OBS服务,拥有有效的accessKey、secretKey进行签名认证。</p>
<p><strong>请求参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>是否必须</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>endpoint</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>OBS区域访问地址</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>accessKey</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>OBS租户访问的ak</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>secretKey</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>OBS租户访问秘钥</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
<p><strong>响应参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>ObsService</p>
</td>
<td>
<p>var</p>
</td>
<td>
<p>实例化对象</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
<p><strong>实例</strong></p>
<pre>
<code>var obsService = new ObsService("your endpoint", "your accessKey", "your secretKey");</code></pre>
<p><strong>(2)PutObject</strong></p>
<p><strong>接口描述</strong></p>
<p>文件上传</p>
<pre>
PutObjectResponse PutObject(String BucketName, String ObjectKey, String FilePath)
PutObjectResponse PutObject(String BucketName, String ObjectKey, String FilePath, MetadataCollection Metadata)</pre>
<p><strong>请求参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>是否必须</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>bucketName</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>保存对象的 bucket 名称</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>objectKey</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>对象Key,需自行实现策略保证同一bucket下objectKey唯一,不能为空,首字符不能为路径符</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>filePath</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>上传文件的路径</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>metadata</p>
</td>
<td>
<p>MetadataCollection</p>
</td>
<td>
<p>false</p>
</td>
<td>
<p>对象元信息</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
<p><strong>响应参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>putObjectResult</p>
</td>
<td>
<p>PutObjectResult</p>
</td>
<td>
<p>PutObjectResult返回对象</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
<p><strong>实例</strong></p>
<pre>
<em>/*标准文件上传*/</em>
var putObjectResult = obsService.PutObject(BucketName,ObjectKey,FilePath);
<em>/*附带文件原信息上传*/</em>
var metaData = <strong>new</strong> MetadataCollection();
metaData.Add(<span style="color:#2a00ff">"file_name"</span>,<span style="color:#2a00ff">"test.jpg"</span>);
var putObjectResult = obsService.PutObject PutObject(BucketName, ObjectKey, FilePath, metaData);</pre>
<p><strong>(3) PutObject</strong></p>
<p><strong>接口描述</strong></p>
<p>流式上传</p>
<pre>
PutObjectResponse PutObject(String BucketName, String ObjectKey, Stream InputStream)
PutObjectResponse PutObject(String BucketName, String ObjectKey, Stream InputStream, MetadataCollection Metadata)</pre>
<p><strong>请求参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>是否必须</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>bucketName</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>保存对象的 bucket 名称</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>objectKey</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>对象Key,需自行实现策略保证同一bucket下objectKey唯一,不能为空,首字符不能为路径符</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>inputStream</p>
</td>
<td>
<p>Stream</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>输入流</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>metadata</p>
</td>
<td>
<p>MetadataCollection</p>
</td>
<td>
<p>false</p>
</td>
<td>
<p>对象元信息</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
<p><strong>响应参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>putObjectResult</p>
</td>
<td>
<p>PutObjectResult</p>
</td>
<td>
<p>PutObjectResult返回对象</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
<p><strong>实例</strong></p>
<pre>
<em>/*标准流上传*/</em>
var putObjectResult = obsService.PutObject(BucketName,ObjectKey,InputStream);
<em>/*附带流原信息上传*/</em>
var metaData = <strong>new</strong> MetadataCollection();
metaData.Add(<span style="color:#2a00ff">"file_name"</span>,<span style="color:#2a00ff">"test.jpg"</span>);
var putObjectResult = obsService.PutObject PutObject(BucketName, ObjectKey, InputStream, metaData);</pre>
<p><strong>(4) GetObject</strong></p>
<p><strong>接口描述</strong></p>
<p>文件下载</p>
<pre>
GetObjectResponse GetObject (String BucketName, String ObjectKey)</pre>
<p><strong>请求参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>是否必须</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>bucketName</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>保存对象的 bucket 名称</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>objectKey</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>对象Key,需自行实现策略保证同一bucket下objectKey唯一,不能为空,首字符不能为路径符</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
<p><strong>响应参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>getObjectResponse</p>
</td>
<td>
<p>GetObjectResponse</p>
</td>
<td>
<p>GetObjectResponse对象</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
<p><strong>实例</strong></p>
<pre>
var getObjectResp = os.GetObject(bucketName, keyName);</pre>
<p><strong>(5) GetDownloadUrl</strong></p>
<p><strong>接口描述</strong></p>
<p>获取下载链接。</p>
<pre>
String GetDownloadUrl(String BucketName, String ObjectKey)
String GetDownloadUrl(String BucketName, String ObjectKey, String displayFileName)
String GetDownloadUrl(String BucketName, String ObjectKey, String displayFileName, <strong>long</strong> expiresSeconds)</pre>
<p><strong>请求参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>是否必须</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>bucketName</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>保存对象的 bucket 名称</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>objectKey</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>对象Key</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>displayFileName</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>false</p>
</td>
<td>
<p>在请求url时,期望云存储服务端返回的content-disposition头信息,默认为null</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>expireSeconds</p>
</td>
<td>
<p>long</p>
</td>
<td>
<p>false</p>
</td>
<td>
<p>url有效秒数,url生成后,在此时间段内有效,过期的url会被云存储拒绝访问,默认为20s</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
<p><strong>响应参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>url</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>已签名的文件下载链接</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
<p><strong>(6) DeleteObject</strong></p>
<p><strong>接口描述</strong></p>
<p>删除文件</p>
<pre>
DeleteObjectResponse DeleteObject(String BucketName, String ObjectKey)</pre>
<p><strong>请求参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>是否必须</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>bucketName</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>保存对象的 bucket 名称</p>
</td>
<td>
<p>-</p>
</td>
</tr>
<tr>
<td>
<p>objectKey</p>
</td>
<td>
<p>String</p>
</td>
<td>
<p>true</p>
</td>
<td>
<p>对象Key</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
<p><strong>响应参数</strong></p>
<table>
<caption> </caption>
<thead>
<tr>
<th>
<p>参数名称</p>
</th>
<th>
<p>参数类型</p>
</th>
<th>
<p>参数描述</p>
</th>
<th>
<p>备注</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>deleteObjectResponse</p>
</td>
<td>
<p>DeleteObjectResponse</p>
</td>
<td>
<p>DeleteObjectResponse对象</p>
</td>
<td>
<p>-</p>
</td>
</tr>
</tbody>
</table>
提交成功!非常感谢您的反馈,我们会继续努力做到更好!