# 上传插件2.0

## 说明：

1. 本文档从用户角度简单概述了polyv web上传插件的使用方法。
2. V2.0 版本的使用与 V1.0 版本完全一致，因此无需更改原有的接口调用及逻辑，只要更换polyv-upload.js的调用地址即可。（推荐使用 V2.0 版本）

## 一、功能：

1. 上传文件 1）上传前可以进行选择分类、添加标签、选择视频优化处理、修改文件名及文件说明等操作 2）可选择默认的上传目录 3）可设置是否对源文件进行编码 4）支持断点续传。中途断网或浏览器因故障等原因重启后同个文件可以实现从断点续传。（仅在浏览器版本>=IE10及主流浏览器下支持实现该功能） 5）同时选择多个文件、上传过程显示进度
2. 查看视频 1）查看视频列表 2）根据标题关键字搜索视频 3）获取具体的视频信息 4）更换封面 　　a.上传新图片作为封面 　　b.选择视频截图作为封面 　　c.选择最近上传的图片作为封面
3. 可选择只显示“上传列表”或“视频列表”或显示全部
4. 可调用接口（response、uploadSuccess、uploadFail）返回视频信息
5. 提供打开、关闭插件的方法

## 二、浏览器支持

* 支持大部分主流浏览器，IE浏览器兼容IE9及IE9以上。
* 在支持HTML5新特性的浏览器中，**支持断点续传**，最大可上传**30GB**的文件。
* 反之，在不支持HTML5新特性的浏览器中（如IE9），**不支持断点续传功能**，最大可上传**2GB**的文件。

## 三、入门教程：

**1、首先在调用该插件的页面上添加一个按钮：**

```html
<input type="button" id="upload" value="上传"></input>
```

**2、引入POLYV上传插件的js文件**

```html
<script src="//static.polyv.net/file/plug-in-v2/polyv-upload.min.js"></script>
```

**3、添加脚本，初始化上传参数并新建一个上传实例。**

```javascript
var obj = {
    uploadButtton: 'upload',
    userid: data.userid,
    ts: data.ts,
    hash: data.hash,
    sign: data.sign,
    component: 'all',
    cataid: 1499657507273,
    luping: '1',
    extra: {
        keepsource: 1,
    }
};
upload = new PolyvUpload(obj);
```

[在线运行](https://git.polyv.net/help-center/document-center/-/blob/master/web-sdk-demo/index.html#vodupload-plugin)\
\
**4、定时更新sign等参数** 上传参数中的ts、hash、sign有一定的时间期限，需要**每隔3分钟更新一次参数**。更新参数需要用到`update(data)`方法。 如果在上传参数中带有正确的`requestUrl`参数，可由插件内部自动更新sign等值。

**5、上传参数解释：** （更详细的说明请查看下文的说明文档）

* uploadButtton：打开上传控件按钮的id。
* userid：可以在“云点播”后台->“设置”->“API接口”页面中找到您的userid。
* ts：13位的毫秒级时间戳。
* hash：是根据将ts和writeToken按照顺序拼凑起来的字符串进行MD5计算得到的值。
* sign：是根据将secretkey和ts按照顺序拼凑起来的字符串进行MD5计算得到的值。
* component：设为'all'表示上传列表和视频列表都要显示。
* cataid：上传目录id，'1' 表示默认分类。
* luping：开启视频课件优化处理，对于上传录屏类视频清晰度有所优化。
* keepsource：源文件播放（不对源文件进行编码）。这里设为 1 表示源文件播放。

**6、获取用户信息的代码示例（PHP）：**

```php
/* 
说明：以下的userid、secretkey、writeToken、readToken可以在“云点播”后台->“设置”->“API接口”页面中找到。
*/
$userid = "your userid";
$secretkey = "your sercrety";
$writeToken = "your writeToken";
$readToken = "your readToken";

$ts = time() * 1000;
$hash = md5($ts . $writeToken);
$sign = md5($secretkey . $ts);
```

## 四、使用文档

### 1. 上传参数options

| 参数                                   | 含义                                                                                                       | 类型       | 是否必填                          |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------- | -------- | ----------------------------- |
| uploadButtton                        | 打开上传插件的按钮id。                                                                                             | String   | 必填                            |
| userid                               | 可以在“云点播”后台->“设置”->“API接口”页面中找到您的userid。                                                                  | String   | 必填                            |
| ts                                   | 13位的毫秒级时间戳。需要每隔3分钟使用`update()`定时更新。                                                                      | Number   | 必填（如未设置requestUrl参数）          |
| hash                                 | 是根据将ts和writeToken（可以在“云点播”后台->“设置”->“API接口”页面中找到）按照顺序拼凑起来的字符串进行MD5计算得到的值。需要每隔3分钟使用`update()`定时更新。        | String   | 必填（如未设置requestUrl参数）          |
| sign                                 | 是根据将secretkey（可以在“云点播”后台->“设置”->“API接口”页面中找到）和ts按照顺序拼凑起来的字符串进行MD5计算得到的值(不需要转大写)。需要每隔3分钟使用`update()`定时更新。 | String   | 必填（如未设置requestUrl参数）          |
| requestUrl                           | 插件内定时更新sign信息的请求地址。                                                                                      | String   | 必填（如未设置ts、hash、sign参数）        |
| component                            | 需要显示的组件内容。'videoList'（只显示视频列表）或 'uploadList'（只显示上传列表）或 'all'（显示上传列表和视频列表）。                               | String   | 选填，默认值 'all'                  |
| cataid                               | 上传目录id，不填时表示默认分类。                                                                                        | String   | 选填，默认值 '1'                    |
| luping                               | 开启视频课件优化处理，对于上传录屏类视频清晰度有所优化。 '0'（不开启） 或 '1'（开启）。                                                         | String   | 选填，默认值 '0'                    |
| defaultTagPlaceholder                | 自定义标签输入框占位符。                                                                                             | String   | 选填                            |
| defaultDescPlaceholder               | 自定义视频描述输入框占位符。                                                                                           | String   | 选填                            |
| fileLimit                            | 以字节为单位。可上传单个视频的大小，默认不限制。                                                                                 | Number   | 选填                            |
| fileLimitTips                        | 超出大小限制时的提示语，默认提示“该视频文件过大，请重新选择”。                                                                         | String   | 选填                            |
| fileNumberLimit                      | 最大单次可上传文件数，默认不限制。                                                                                        | Number   | 选填                            |
| fileNumberLimitTips                  | 超出最大单次可上传文件数限制时的提示语，默认提示“每次上传的文件个数不能超过${fileNumberLimit}个”。                                              | String   | 选填                            |
| fileTypeLimit                        | 文件类型限制。填写文件的扩展名，多个扩展名用英文逗号隔开，例如 "avi,mp4"。支持的扩展名有 avi、mpg、mp4、flv、wmv、mov、3gp、mkv、mp3、wav、m4v、webm。      | String   | 选填，默认为常见的音视频类型。               |
| batchFileSizeLimit                   | 单次选择多个文件上传时，文件总大小的限制,单位字节                                                                                | Number   | 选填                            |
| batchFileSizeLimitTips               | 超出大小限制时的提示语                                                                                              | String   | 选填，默认提示：”待上传的文件总大小超过限制，请重新选择“ |
| width                                | 以px为单位。弹框的宽，可选范围 >=900。                                                                                  | Number   | 选填，默认值 1000                   |
| height                               | 以px为单位。弹框的高，范围>=500。                                                                                     | Number   | 选填，默认值 600                    |
| config                               | 上传配置。（可设置内容包括以下2个）                                                                                       | Object   | 选填                            |
| config.parallel                      | 分片上传的并发数。                                                                                                | Number   | 选填，默认值 5                      |
| config.useCDNDomain                  | 是否使用CDN域名上传文件。                                                                                           | Boolean  | 选填，默认值 false                  |
| region                               | 设置上传地域                                                                                                   | String   | 选填,默认'line1'                  |
| extra                                | （可设置内容包括以下1个）                                                                                            | Object   | 选填                            |
| extra.keepsource                     | 是否源文件播放（不对源文件进行编码）。可设置为`0`（对源文件进行编码）或`1`（源文件播放）。                                                         | Number   | 选填，默认值 0                      |
| extra.state                          | 用户自定义信息，如果提交了该字段，会在服务端上传完成回调时透传返回。                                                                       | String   | 选填，默认值 0                      |
| hiddenControlWidget                  | 需要隐藏的控件的控制参数，不传则默认显示所有控件。（可设置内容包括以下3个）                                                                   | Object   | 选填                            |
| hiddenControlWidget.cateSelector     | 是否隐藏分类选择。当该控件隐藏后，上传的目录取 cataid 参数值。                                                                      | Boolean  | 选填，默认值 false                  |
| hiddenControlWidget.videoTagInput    | 是否隐藏标签输入框。                                                                                               | Boolean  | 选填，默认值 false                  |
| hiddenControlWidget.coursewareRefine | 是否隐藏课件优化选项。当该控件隐藏后，取luping参数值。                                                                           | Boolean  | 选填，默认值 false                  |
| uploadSuccess                        | 当前文件上传完毕时触发的回调函数。回调参数为 fileData。                                                                         | Function | 选填                            |
| uploadFail                           | 当前文件上传失败时触发的回调函数。回调参数为 err。                                                                              | Function | 选填                            |
| response                             | 返回指定视频的信息时的回调函数。                                                                                         | Function | 选填                            |

### 2. 方法

#### 1. update(data)

用于更新ts、hash、sign3个信息。

#### 2. closeWrap()

关闭插件。

#### 3. openWrap()

打开插件。

#### 4. destroy()

销毁实例。

#### 5. setParams(Object|String\[,value])

更新可选设置参数。

**setParams参数说明：**

* 当第一个参数为Object类型，此时可同时更新多个插件参数。如：

```javascript
upload.setParams({
	cataid: 233333,
	luping: 1,
	defaultTagPlaceholder: '标签文字说明'
});
```

* 当第一个参数为String类型，此时只更新单个插件参数。即第一个参数为要更新的插件参数的名字，此时后面value为必传，值为要更新的插件参数的值。如：

```javascript
upload.setParams('cataid', 233333);
```

**setParams可更新参数范围：** component、luping、defaultTagPlaceholder、defaultDescPlaceholder、fileLimit、fileLimitTips、 fileNumberLimit、fileNumberLimitTips、width、height、extra

## 五、demo下载

demo下载：[POLYV Web上传插件源码](https://git.polyv.net/help-center/document-center/-/blob/master/third_res/front/upload-demo-1.zip)

## 六、版本更新

#### v2.1.0

* 增加上传文件类型检查
* 增加参数支持修改上传地域
* 增加参数支持单次批量上传文件总大小限制
