CRMEB/crmeb/public/system/module/widget/vedio-upload.js
2020-07-04 18:38:20 +08:00

81 lines
2.4 KiB
JavaScript

function UserFactory(name, file, client, res, callback) {
function OSS() {
var suffix = file.name.substr(file.name.indexOf("."));
var obj = uploadName();
var storeAs = obj + suffix;
client.multipartUpload(storeAs, file).then(function (result) {
var url = result.res.requestUrls[0];
var length = url.lastIndexOf('?');
var imgUrl = url.substr(0, length);
callback(imgUrl, file, 3);
}).catch(function (err) {
console.log(err);
});
}
function COS() {
var selectedFile = file;
filename = selectedFile.name;
filename = uploadName(filename);
client.putObject({
Bucket: res.bucket,
Region: res.region,
Key: filename,
StorageClass: 'STANDARD',
Body: selectedFile,
}, function (err, data) {
callback("http://" + data.Location, file, 4);
});
}
function QINIU() {
var files = file;
var key = uploadName();
var token = client; //从服务器拿的并存在本地data里
var putExtra = {
fname: '',
params: {},
mimeType: null,
};
var config = {
useCdnDomain: true, //使用cdn加速
};
var observable = qiniu.upload(files, key, token, putExtra, config);
observable.subscribe({
next: (result) => {
// 主要用来展示进度
console.warn(result);
},
error: (err) => {
console.log(err);
},
complete: (re) => {
callback("http://" + res.region + "/" + re.key, file, 2);
},
});
}
function uploadName() {
const 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"];
let nums = "";
for (let i = 0; i < 32; i++) {
const r = parseInt(Math.random() * 35);
nums += data[r];
}
return nums;
}
switch (name) {
case 'OSS':
return new OSS();
break;
case 'COS':
return new COS();
break;
case 'QINIU':
return new QINIU();
break;
}
}