(function (global) { var AdminUpload = { config: { file: null, token: '', accessKeyId: '', accessKeySecret: "", bucketName: '', region: "", domain:'', uploadIng: function (res) { } }, uploadName: function () { var data = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"], nums = ""; for (var i = 0; i < 32; i++) { var r = parseInt(Math.random() * 35); nums += data[r]; } return nums; } }; /** * QINIU 七牛上传 * @return {Promise} * @constructor */ AdminUpload.QINIU = function () { var putExtra = { fname: '', params: {}, mimeType: null, }, config = { useCdnDomain: true, //使用cdn加速 }, that = this; return new Promise(function (resolve, reject) { var observable = qiniu.upload(that.config.file, that.uploadName(), that.config.token, putExtra, config); observable.subscribe({ next: (result) => { // 主要用来展示进度 that.config.uploadIng(result.total.percent.toFixed(2)); }, error: (err) => { reject(err); }, complete: (res) => { resolve({url: that.config.domain + "/" + res.key, type: 2}); }, }); }) } /** * cos 上传 * @return {Promise} * @constructor */ AdminUpload.COS = function () { var that = this; return new Promise(function (resolve, reject) { console.log(that.config); var client = new COS({ SecretId: that.config.accessKeyId, SecretKey: that.config.accessKeySecret }); client.putObject({ Bucket: that.config.bucketName, Region: that.config.region, Key: that.uploadName(), StorageClass: 'STANDARD', Body: that.config.file, onProgress: function (progressData) { that.config.uploadIng(parseInt(progressData.percent * 100)); } }, function (err, data) { if (err) { reject(err); } else { resolve({url: "http://" + data.Location, type: 4}); } }); }) } /** * oss 上传 * @return {Promise} * @constructor */ AdminUpload.OSS = function () { var that = this, file = that.config.file, suffix = file.name.substr(file.name.indexOf(".")), storeAs = this.uploadName() + suffix; return new Promise(function (resolve, reject) { var client = new OSS.Wrapper({ region: that.config.region, accessKeyId: that.config.accessKeyId, accessKeySecret: that.config.accessKeySecret, bucket: that.config.bucketName, }); var options = { progress: async function (p, k, i) { that.config.uploadIng(parseInt(p.toFixed(2) * 100)); }, partSize: 1000 * 1024,//设置分片大小 timeout: 120000,//设置超时时间 } client.multipartUpload(storeAs, file, options).then(function (result) { var url = result.res.requestUrls[0]; var length = url.lastIndexOf('?'); var imgUrl = url.substr(0, length); resolve({url: imgUrl, type: 3}); }).catch(function (err) { reject(err); }); }); } /** * 执行上传 * @param driver * @param opt * @return {*} */ AdminUpload.upload = function (driver, opt) { if (typeof opt !== 'object') { opt = {}; } Object.assign(this.config, opt); var suffix = this.config.file.name.substr(this.config.file.name.indexOf(".")); if (suffix != '.mp4') { return new Promise(function (resolve, reject) { reject('只能上传MP4文件'); }) } if (this[driver]) { return this[driver](); } else { return new Promise(function (resolve, reject) { reject('上传句柄不存在'); }) } } global.AdminUpload = AdminUpload; return AdminUpload; }(this));