# Inspur-OSS-JS-SDK

基于浪潮云对象存储 API 开发的前端 JS SDK

## 概述

Inspur-OSS-JS-SDK（下文简称为 JS-SDK）适用于 ：IE11、Edge、Chrome、Firefox、Safari 等浏览器，基于浪潮云对象存储官方 API 构建，用于管理存储桶和文件等OSS资源。使用JS-SDK发起请求时，您需要初始化一个Client实例，并根据需要修改默认配置项。

## 准备工作

### 设置跨域规则（CORS）

通过浏览器直接访问OSS时，CORS配置规则要求如下：

Allowed-Origins：配置的时候要带上完整的域信息。注意不要遗漏了协议名如http，如果端口号不是默认的还要带上端口号之类的。如果不确定的话，可以打开浏览器的调试功能查看Origin头。这一项支持使用通配符*，但是只支持一个，可以根据实际需要灵活配置。

Allowed-Methods：按照需求开通对应的方法。例如分片上传时，设置为PUT；删除文件时，设置为DELETE。

Allowed-Headers：允许通过的Header列表，因为这里容易遗漏Header，因此建议没有特殊需求的情况下设置为*，大小写不敏感。

Exposed-Headers：暴露给浏览器的Header列表，不允许使用通配符。具体的配置需要根据应用的需求来选择，只暴露需要使用的Header，如ETag、x-oss-request-id等。如果不需要暴露这些信息，这里可以不填。如果有特殊需求可以单独指定，大小写不敏感。

## 引入

### CDN引入

* [crypto-js加密库下载]()
* [oss-js-sdk下载]()

```
<!-- sdk签名依赖加密库 -->
<script src="crypto-js.min.js"></script>
<script>window.cryptoJs = window.CryptoJS;</script>
<!-- 本地sdk -->
<script src="oss-js-sdk.umd.min.js" ></script>
<!-- sdk client，配置访问密钥及调用的API方法-->
<script src="connect-oss-client.js"></script>

<!-- connect-oss-client.js 示例 -->
const SdkClient = window["oss-js-sdk"].SdkClient;
const sdkClient = new SdkClient({
    endpoint: <yourEndpoint>,
    accessKey: <yourAccessKeyId>,
    secretKey: <yourSecretKeyId>,
    region: <yourRegion>
});

sdkClient.getBucketAcl({ 'Bucket': <yourBucket> }).then(result => {
    console.log(result);
});
```

### npm包引入
```
npm install oss-js-sdk
npm install crypto-js
```

```
import { SdkClient } from 'oss-js-sdk';

const sdkClient = new SdkClient({
    endpoint: <yourEndpoint>,
    accessKey: <yourAccessKeyId>,
    secretKey: <yourSecretKeyId>,
    region: <yourRegion>
});

sdkClient.getBucketAcl({ 'Bucket': <yourBucket> }).then(result => {
    console.log(result);
});
```

### SDK使用

| 类型     | 功能                                         |
|--------|--------------------------------------------|
| Bucket | [创建存储桶](1-桶管理.md#创建存储桶)                    |
| Bucket | [桶是否存在](1-桶管理.md#桶是否存在)                    |
| Bucket | [存储桶列表](1-桶管理.md#存储桶列表)                    |
| Bucket | [删除存储桶](1-桶管理.md#删除存储桶)                    |
| Bucket | [获取桶ACL](2-桶ACL.md#获取桶ACL)                 |
| Bucket | [设置桶ACL](2-桶ACL.md#设置桶ACL)                 |
| Bucket | [获取跨域规则](3-桶跨域规则.md#获取跨域规则)                |
| Bucket | [设置跨域规则](3-桶跨域规则.md#设置跨域规则)                |
| Bucket | [删除跨域规则](3-桶跨域规则.md#删除跨域规则)                |
| Bucket | [获取生命周期](4-桶生命周期.md#获取生命周期)                |
| Bucket | [设置生命周期](4-桶生命周期.md#设置生命周期)                |
| Bucket | [删除生命周期](4-桶生命周期.md#删除生命周期)                |
| Bucket | [获取桶策略](5-桶策略.md#获取桶策略)                    |
| Bucket | [设置桶策略](5-桶策略.md#设置桶策略)                    |
| Bucket | [删除桶策略](5-桶策略.md#删除桶策略)                    |
| Bucket | [获取静态网站托管](6-桶静态网站托管.md#获取静态网站托管)          |
| Bucket | [设置静态网站托管](6-桶静态网站托管.md#设置静态网站托管)          |
| Bucket | [删除静态网站托管](6-桶静态网站托管.md#删除静态网站托管)          |
| Bucket | [获取桶自定义域名](7-桶自定义域名.md#获取桶自定义域名)           |
| Bucket | [设置桶自定义域名](7-桶自定义域名.md#设置桶自定义域名)           |
| Bucket | [获取桶多版本配置](8-桶多版本配置.md#获取桶多版本配置)           |
| Bucket | [设置桶多版本配置](8-桶多版本配置.md#设置桶多版本配置)           |
| Bucket | [获取桶加密配置](9-桶加密配置.md#获取桶加密配置)              |
| Bucket | [设置桶加密配置](9-桶加密配置.md#设置桶加密配置)              |
| Bucket | [删除桶加密配置](9-桶加密配置.md#删除桶加密配置)              |
| Bucket | [获取镜像回源配置](10-桶镜像回源配置.md#获取镜像回源配置)         |
| Bucket | [设置镜像回源配置](10-桶镜像回源配置.md#设置镜像回源配置)         |
| Bucket | [删除镜像回源配置](10-桶镜像回源配置.md#删除镜像回源配置)         |
| Bucket | [获取桶WORM配置](11-桶WORM配置.md#获取桶WORM配置)(功能预览) |
| Bucket | [设置桶WORM配置](11-桶WORM配置.md#设置桶WORM配置)(功能预览) |
| Bucket | [获取桶标签](12-桶标签.md#获取桶标签)(功能预览)             |
| Bucket | [设置桶标签](12-桶标签.md#设置桶标签)(功能预览)             |
| Bucket | [删除桶标签](12-桶标签.md#删除桶标签)(功能预览)             |
| Object | [简单文件上传](13-文件上传.md#简单文件上传)                |
| Object | [追加上传](13-文件上传.md#追加上传)                    |
| Object | [初始化分片](14-分片上传.md#初始化分片)                  |
| Object | [上传分片](14-分片上传.md#上传分片)                    |
| Object | [合并分片](14-分片上传.md#合并分片)                    |
| Object | [中止分片上传](14-分片上传.md#中止分片上传)                |
| Object | [分片列表](14-分片上传.md#分片列表)                    |
| Object | [碎片列表](14-分片上传.md#碎片列表)                    |
| Object | [文件是否存在](15-文件管理.md#文件是否存在)                |
| Object | [复制文件](15-文件管理.md#复制文件)                    |
| Object | [文件列表](15-文件管理.md#文件列表)                    |
| Object | [多版本文件列表](15-文件管理.md#多版本文件列表)              |
| Object | [删除文件](15-文件管理.md#删除文件)                    |
| Object | [删除指定版本文件](15-文件管理.md#删除指定版本文件)            |
| Object | [获取文件](15-文件管理.md#获取文件)                    |
| Object | [获取文件元数据](15-文件管理.md#获取文件元数据)              |
| Object | [获取文件ACL](16-文件ACL.md#获取文件ACL)             |
| Object | [设置文件ACL](16-文件ACL.md#设置文件ACL)             |
| Object | [获取文件标签](17-文件标签.md#获取文件标签)(功能预览)          |
| Object | [设置文件标签](17-文件标签.md#设置文件标签)(功能预览)          |
| Object | [删除文件标签](17-文件标签.md#删除文件标签)(功能预览)          |
