You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

187 lines
4.6 KiB

import NB from '../js/nb.js'
import {
pathToBase64,
base64ToPath
} from './image-tools.js'
export default {
GetUpload(filepath, isVoice) {
var key = ''
if (isVoice == true) {
key = 'UNIAPP-' + NB.getTime() + '.wav';
} else {
key = 'UNIAPP-' + NB.getTime() + '.png';
}
return new Promise((resolve, reject) => {
uni.showLoading({
title: '加载中...',
mask: false
});
var that = this
NB.sendRequest('Upload.GetUpload').then(info => {
uni.hideLoading()
//七牛上传
if (info[0].uptype == 1) {
// that.qiniu(key, filepath, resolve)
}
//阿里云上传
if (info[0].uptype == 2) {
that.mpServer(info[0].ali, filepath, resolve)
}
//腾讯云上传
if (info[0].uptype == 3) {
that.mpServer(info[0].txcos, filepath, resolve)
// that.createCOS(info[0].txcos, key, filepath, resolve,
// isVoice)
}
}).catch(data=>{
uni.hideLoading()
})
});
},
mpServer(data, path, resolve) {
uni.showLoading({
title: '加载中...',
mask: false
});
uni.uploadFile({
url: getApp().globalData.mainurl + 'Upload.Upload',
filePath: path,
name: 'file',
formData: {
'uid': getApp().globalData.userinfo.id,
'token': getApp().globalData.userinfo.token,
},
success(res) {
console.log(res)
uni.hideLoading()
var data = JSON.parse(res.data)
resolve(data.data.info[0].url_all)
},fail:err=>{
uni.hideLoading()
}
})
},
qiniu(key, filepath, resolve) {
var that = this
// NB.sendRequest('Upload.GetQiniuToken').then(info => {
// var QiNiutoken = NB.decypt(info[0]
// .token);
// qiniuUploader.upload(filepath, res => {
// uni.showToast({
// title: '上传成功',
// icon: 'none'
// });
// resolve(key)
// }, error => {
// uni.showToast({
// title: '上传失败,请重试',
// icon: 'none'
// });
// console.log('上传失败');
// console.log(res);
// }, {
// region: 'ECN',
// domain: getApp().globalData
// .qiniuimageurl,
// key: key,
// uptoken: QiNiutoken,
// });
// })
},
createCOS(obj, key, filepath, resolve, isVoice) {
// #ifdef H5
// var cos = new COSH5({
// SecretId: obj.tmpSecretId,
// SecretKey: obj.tmpSecretKey,
// SecurityToken: obj.sessionToken,
// StartTime: obj.startTime, // 时间戳,单位秒,如:1580000000
// ExpiredTime: obj.expiredTime, // 时间戳,单位秒,如:1580000900
// });
// #endif
// #ifndef H5
// var cos = new COSup({
// SecretId: obj.tmpSecretId,
// SecretKey: obj.tmpSecretKey,
// XCosSecurityToken: obj.sessionToken,
// StartTime: obj.startTime, // 时间戳,单位秒,如:1580000000
// ExpiredTime: obj.expiredTime, // 时间戳,单位秒,如:1580000900
// });
// #endif
this.upload(obj, key, filepath, cos, resolve, isVoice)
},
upload(obj, key, filepath, cos, resolve, isVoice) {
// #ifdef H5
var that = this
pathToBase64(filepath)
.then(base64 => {
const blob = that.base64ToBlob(base64)
var file = that.blobToFile(blob, '')
// cos.putObject({
// Bucket: obj.bucket,
// Region: obj.region,
// Key: key,
// StorageClass: 'STANDARD',
// Body: file,
// onProgress: function(progressData) {
// var data = JSON.stringify(progressData)
// console.log(data);
// if ((data.total == data.loaded) && (data.total != 0 && data.loaded != 0)) {
// console.log('上传成功:' + key);
// resolve(key)
// }
// }
// }, function(err, data) {
// console.log(err || data);
// })
})
.catch(error => {
console.error(error)
})
// #endif
// #ifndef H5
// cos.postObject({
// Bucket: obj.bucket,
// Region: obj.region,
// Key: key,
// FilePath: filepath,
// onProgress: function(info) {
// console.log(JSON.stringify(info));
// if ((info.total == info.loaded) && (info.total != 0 && info.loaded != 0)) {
// console.log('上传成功:' + key);
// // var string = 'https://' + obj.bucket + '.cos.' + obj.region + '.myqcloud.com/' + key
// resolve(key)
// }
// }
// }, function(err, data) {
// console.log(err || data);
// });
// #endif
},
base64ToBlob(base64Data) {
let arr = base64Data.split(','),
fileType = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
l = bstr.length,
u8Arr = new Uint8Array(l);
while (l--) {
u8Arr[l] = bstr.charCodeAt(l);
}
return new Blob([u8Arr], {
type: fileType
});
},
blobToFile(newBlob, fileName) {
newBlob.lastModifiedDate = new Date();
newBlob.name = fileName;
return newBlob;
},
}