UNPKG

oss-upload.js

Version:

The browser directly uploads files to oss

77 lines (56 loc) 1.9 kB
# 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; } }); }); ```