# oss-upload.js

浏览器端直传aliyun oss

## 安装

```
npm i oss-upload.js -S
```

## 使用

```
import ossUpload from 'oss-upload.js';

ossUpload( { license,folder,fileObj,fileName,fileExtension } ).subscribe(res =>{});
```
#### 参数:

`ossConfig`: 阿里云配置项参考 [document](https://help.aliyun.com/document_detail/64095.html?spm=a2c4g.11186623.6.962.4fac5d26WnucPG).

`aimFolder`: 位于oss上的目标文件夹，用于放置上传的文件.

`fileObj`: 需要上传的File对象或Blob对象

`fileName`: 文件名，非必填项，如果不填，则会计算文件的MD5值作为文件名

`fileExtension`: 文件拓展名，非必填项，如果不填，则会计算文件mimetype作为拓展名

#### 返回:

`ossUpload()` 会返回`status` 和 `data`组成的对象.

返回示例:

1. `{status:200,data:'htto://***.jpg'}`
2. `{status:300,data:1.234}` // 如果文件大小大于20mb，则会在上传时返回300状态，同时data返回当前上传的百分比.
3. `{status:400,data:''}`

#### SDK 上传方法: 

当文件大小大于20mb时，使用 `put()`进行上传，否则会使用`multipartUpload()`进行分片上传.


## 完整例子
```
import ossUpload from 'oss-upload.js';

document.querySelector("#uploader").addEventListener("change", file => {
  const uploadObservable = ossUpload(
    {
        license:{
          region: "oss-cn-hangzhou",
          accessKeyId: "yourAccessKeyId",
          accessKeySecret: "yourAccessKeySecret",
          bucket: "yourBucket"
        }
        folder:"upload",
        fileObj:file.target.files[0]
    }
  ).subscribe(res =>{
      switch(res.status){
          case 200:
          	// upload successed
          	uploadObservable.unsubscribe();
          break;
          case 300:
          	// uploading
          break;
          case 400:
          	// upload failed
          break;
      }
  });
});
```
