// An highlighted block import COS from 'cos-js-sdk-v5' import { getSecret } from '@/api/upload' export default function upload(file, config, callback) { if (typeof config.isPublic === 'undefined') { config.isPublic = true } getSecret({ type: config.type, path: config.path, isPublic: config.isPublic ? config.isPublic : false }).then(response => { const data = response.data const cos = new COS({ getAuthorization: function(options, callback) { callback({ TmpSecretId: data.tmpSecretId, TmpSecretKey: data.tmpSecretKey, XCosSecurityToken: data.sessionToken, ExpiredTime: data.expiredTime }) } }) return { cos: cos, dir: data.url, bucket: data.bucket, region: data.region } }).then(data => { const cos = data.cos const dir = data.dir const bucket = data.bucket const region = data.region const url = cos.getObjectUrl({ Bucket: bucket, Region: region, Key: `${dir}/${file.name}`, Sign: false }, function(data) { cos.putObject({ Bucket: bucket, Region: region, Key: `${dir}/${file.name}`, Body: file }, function(data) { if (config.isPublic) { callback(url.replace(/^http(s)?:\/\/(.*?)\//, 'https://www.baidu.com/')) } else { callback(url) } }) }) }) }