UNPKG

ulearning-obs

Version:

obs

336 lines (320 loc) 13.1 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>obs</title> </head> <body> <div id="app"> <!-- <select name="" id="mode"> <option value="qiniu">qiniu云</option> <option value="huawei" selected>华为obs</option> </select> --> <button id="uploaderBtn">上传文件</button> <button @click="initUploader()">initBtn</button> <button @click="cancelUpload()">取消上传</button> <button @click="getObjectList()">获取文件列表</button> <button @click="getObjectInfo()">获取对象信息</button> <ul class="list"> <li v-for="(item,index) in list" :key="index"> <span>{{item.name}}</span><span> {{item.size}}</span><span>------{{item.percent}}------</span> <b>{{item.key}}</b> </li> </ul> <div > <h4>base64相关</h4> <button @click="getImageBase64()">getImgBase64</button> <button @click="blobUpload()">blob上传图片</button> </div> <button @click="download">download</button> <button @click="getObjectData">getObjectData</button> </div> </body> <!-- <script src="./node_modules/qiniu-js/dist/qiniu.min.js"></script> --> <!-- <script src="./node_modules/esdk-obs-browserjs/dist/esdk-obs-browserjs-3.21.8-trial-1.js"></script> --> <!-- <script src="./src/index.js"></script> --> <script src="./dist/obs-huawei.js"></script> <script src="./node_modules/vue/dist/vue.min.js"></script> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <script> var root = new Vue({ el: '#app', data () { return { uploader: '', list: [] } }, mounted () { window.test = this console.log(this) let a = {b:[]} console.log([...a.b]) }, methods:{ initUploader() { var self = this this.uploader = new Obs({ // maxSize: 10, fileTypes: [], // obsHost: 'http://abc.ulearning.cn/', multiple: true, // exts: 'png,jpeg,png', // obsSign: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdHVkZW50SWQiOiIyMDIyMDIwMUBqZjExNzgiLCJsb2dpbk5hbWUiOiIyMDIyMDIwMUBqZjExNzgiLCJwcm9qZWN0TmFtZSI6InRlYWNoZXItZGV2ZWxvcG1lbnQiLCJleHAiOjE2ODkwODg3MjEsInVzZXJJZCI6NzU3MDE1N30.2LWnAYws3ZKHFXk-p-u7v-w6t9D8mabgN357M1dTcAs', m3u8: true, authorization : '0CA90C2AF90017713750A35007B7DC1A' }) // this.uploader.getObsClient = function (callback) { // var self = this // var url = this.uptokenHost + '/obs/uploadToken' // var xhr = new XMLHttpRequest() // // 优学院账号用/obs/uploadToken接口,用authorization校验身份, 非优学院账号用/obs/uploadToken/sign,用obsSign校验身份 // if (this.obsSign) { // url = this.uptokenHost + '/obs/uploadToken/sign' // } // xhr.open('get', url, true) // if (this.obsSign) { // xhr.setRequestHeader('obsSign', this.obsSign) // } // xhr.onreadystatechange = function () { // if (xhr.readyState === 4) { // if (xhr.status === 200) { // var result = JSON.parse(xhr.responseText) // if (result.code == 1) { // self.obsClientConfig = result.result // var obsClient = new ObsClient({ // access_key_id: result.result.ak, // secret_access_key: result.result.sk, // server: result.result.endpoint, // security_token: result.result.securitytoken, // timeout: 60 * 30, // }); // self.obsHost = self.obsClientConfig.domain // callback && callback(obsClient) // } else { // self.error('', { // code: 50080, // msg: 'token获取失败' // }) // } // } else { // self.error('', { // code: 50080, // msg: 'token获取失败' // }) // } // } // } // xhr.send() // } this.uploader.initUpBtn(document.getElementById('uploaderBtn')) // this.uploader.putObject = function (file) { // // var self = this // file.ext = file.ext || file.name.substring(file.name.lastIndexOf('.')) // // file.key = file.key || 'resources/web/' + Date.now() + Math.round(Math.random() * 10000) + file.ext // // file.key = 'test/22111.txt' // this.obsClient.putObject({ // Bucket: self.uploader.obsClientConfig.bucket, // Key: file.key, // Metadata: { // 'ulearning-sign': 'liuzhong0117' // }, // SourceFile: file, // ProgressCallback: function (transferredAmount, totalAmount, totalSeconds) { // var percent = Math.floor(transferredAmount * 100 / totalAmount) // percent = percent > 99 ? 99 : percent // file.percent = percent // console.log(file.percent) // } // }) // .then(res => { // console.log(res) // // if (res.CommonMsg.Status < 300) { // HTTP状态码小于300,调用成功 // // file.obsHost = self.obsHost // // if (file.ext.toLowerCase().includes('wma')) { // // file.originKey = file.key // // file.key = file.key.substring(0, file.key.lastIndexOf('.')) + '.mp3' // // self.hwAudioTranscoding(file) // // } // // let ext = file.ext.substring(1).toLowerCase() // // let type = self.getFileType(file.key) // // if (type == 'video') { // // if (self.m3u8) { // // file.m3u8Key = 'resources/web/' + Date.now() + Math.round(Math.random() * 10000) + '.m3u8' // // } // // self.hwVideoTranscoding(file) // // } else if (type == 'audio') { // // self.getHuaweiMetadata(file.originKey || file.key, function (info){ // // file.duration = info.duration // // self.success(file) // // }) // // } else { // // self.success(file) // // } // // } // }) // .catch(err => { // self.error(file, { // code: 50081, // msg: '华为上传时失败', // err: err // }) // }) // } this.uploader.onBeforeUpload = function (file) { self.list.push(file) file.onProgress = function (percent) { console.log('progress----file-----' + percent) } file.onSuccess = function () { console.log('success----file-----',file) } file.onError = function (err) { console.log('error----file-----' + err) } console.log('onBeforeUpload----',file) } this.uploader.onError = function (file,err) { console.log('error',file,err) } this.uploader.onSuccess = function (file) { console.log('success----',file) } this.uploader.onProgress = function (file,percent) { // file.percent = percent // self.list = self.list self.$set(self.list, 0, file) console.log('progress----',file, percent) } }, getObjectList () { let self = this let obs = new Obs({ uptokenHost: 'https://courseapi.ulearning.cn' }) obs.getObsClient(function (obsClient) { obsClient.listObjects({ Bucket: obs.obsClientConfig.bucket, MaxKeys: 5, }) }) }, getObjectInfo () { // resource/obs/1631769510625.wmv let obs = new Obs({}) obs.getObsClient(function (obsClient) { obsClient.getObjectMetadata({ Bucket: obs.obsClientConfig.bucket, Key: 'resources/web/16889587045223346.jpg' }) .then(res => { console.log(res) }) }) }, cancelUpload() { console.log(this.uploader) this.uploader.cancelUpload(uploader.files[0]) }, getObjectData () { let obs = new Obs({ // uptokenHost: 'https://courseapi.ulearning.cn' }) obs.getObjectData('resources/web/16889587045223346.jpg') }, download () { let obs = new Obs({ // uptokenHost: 'https://courseapi.ulearning.cn' }) // obs.download = function (key, name) { // key = key.replace(/^(http|https):\/\/[^/]+\//, ""); // obs.getObsClient((obsClient) => { // obs.obsClient = obsClient // // 使用GET请求下载对象 // var bucketName = obs.obsClientConfig.bucket; // var objectKey = key; // var method = 'GET'; // var res = obsClient.createSignedUrlSync({ // Method : method, // Bucket : bucketName, // Key : objectKey, // QueryParams : { // 'response-content-disposition' : 'attachment;filename=' + encodeURIComponent(name) // }, // Expires : 3600, // }); // console.log(res.SignedUrl) // const a = document.createElement('a'); // a.style.display = 'none'; // a.href = res.SignedUrl // // a.download = 'aaa.jpg'; // document.body.appendChild(a); // a.click(); // }) // } //https://tobs.ulearning.cn/resources/web/16612370505393351.wav obs.download('https://leicloud.ulearning.cn/resources/web/16889587045223346.jpg','111.png') // obs.getDownloadUrl('https://leicloud.ulearning.cn/resources/web/16889587045223346.jpg','111.png', function(url) { // console.log(url) // }) // obs.download() // obs.download('https://obscloud.ulearning.cn/resources/web/16708362968366286.mov', 'bbb.avi') // obs.download('https://leicloud.ulearning.cn/resources/3993768/202204142043499856.jpg?imageslim|imageMogr2/rotate/270', 'abc.jpg') }, blobUpload() { var src = "https://leicloud.ulearning.cn/resource/obs/1631182045470.jpg" var xhr = new XMLHttpRequest() xhr.open('get', src) xhr.responseType = "blob" xhr.onload = function () { console.log(xhr) var blob = xhr.response var uploader = new Obs({ mode: document.getElementById('mode').value }) blob.key = "resource/blob/" + Date.now() + '.png' uploader.startUpload(blob) } xhr.send() }, getQiniuToken(file, callback) { var url = "https://api.tongshike.cn/qiniu/token?filename=" + encodeURIComponent(file.name) var xhr = new XMLHttpRequest() xhr.open('get', url) xhr.setRequestHeader('AUTHORIZATION', 'A7D7F61648C47B8A461D454FD55986E2') xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status === 200) { var token = JSON.parse(xhr.responseText).uptoken callback && callback(token) } } } xhr.send() }, getImageBase64 () { var src = "https://leicloud.ulearning.cn/resource/obs/1631182045470.jpg" var image = new Image() image.crossOrigin = ''; image.src = src image.onload = function () { console.log(image) var canvas = document.createElement("canvas"); canvas.width = image.width canvas.height = image.height var ctx = canvas.getContext("2d"); ctx.drawImage(image, 0, 0, canvas.width, canvas.height); var dataURL = canvas.toDataURL(); var uploader = new Obs() var blob = uploader.dataURLtoBlob(dataURL) blob.ext = 'png' uploader.startUpload(blob) // var base64 = dataURL.substr(dataURL.indexOf(';base64,') + ';base64,'.length) // console.log(dataURL) } } } }) </script> </html>