UNPKG

oss-upload.js

Version:

The browser directly uploads files to oss

86 lines (72 loc) 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = oss_upload; var _rxjs = require("rxjs"); var _fileMd = require("./fileMd5"); var OSS = require("ali-oss"); var ossClient; // 小文件put上传 function put_upload(_ossConfig, _observer) { ossClient.put("".concat(_ossConfig.folder, "/").concat(_ossConfig.filename), _ossConfig.fileObj).then(function (uploadResponse) { if (uploadResponse.res.status === 200) { _observer.next({ status: 200, data: uploadResponse.url.replace(/http:/, "https:") }); } else { _observer.next({ status: 400, data: "" }); } }); } // 大文件分片上传 function multipart_upload(_ossConfig, _observer) { ossClient.multipartUpload("/".concat(_ossConfig.folder, "/").concat(_ossConfig.filename), _ossConfig.fileObj, { progress: function progress(_percent) { _observer.next({ status: 300, data: _percent * 100 }); }, partSize: 5 * 1024 * 1024 }).then(function (uploadResponse) { if (uploadResponse.res.status === 200) { _observer.next({ status: 200, data: "".concat(_ossConfig.bucket).concat(uploadResponse.name) }); } else { _observer.next({ status: 400, data: "" }); } }); } // 传入oss配置、oss bucket、oss目标文件夹、File对象、自定义文件名 function oss_upload(inputObj) { return _rxjs.Observable.create(function (observer) { var ossConfig = { license: inputObj.license, bucket: "https://".concat(inputObj.license.bucket, ".").concat(inputObj.license.region, ".aliyuncs.com"), folder: inputObj.folder, fileObj: inputObj.fileObj, filename: inputObj.fileName }; try { ossClient = new OSS(inputObj.license); } catch (e) { console.error("Error: oss init file,please check your oss config"); } // 若未传入文件名,则将文件的MD5值设为文件名 if (!inputObj.hasOwnProperty('fileName') || !inputObj.fileName) { (0, _fileMd.fileMd5)(inputObj.fileObj, function (err, md5Result) { ossConfig.filename = "".concat(md5Result, ".").concat(inputObj.hasOwnProperty('fileExtension') && inputObj.fileExtension ? inputObj.fileExtension : inputObj.fileObj.type.slice(inputObj.fileObj.type.search(/\//) + 1)); // 根据文件大小选择上传方式 inputObj.fileObj.size < 20 * 1024 * 1024 ? put_upload(ossConfig, observer) : multipart_upload(ossConfig, observer); }); } else { // 根据文件大小选择上传方式 inputObj.fileObj.size < 20 * 1024 * 1024 ? put_upload(ossConfig, observer) : multipart_upload(ossConfig, observer); } }); }