askbot-dragon 0.7.17 → 0.7.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
Binary file
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
const OSS = require('ali-oss');
|
|
4
|
+
|
|
5
|
+
const ossConfig={
|
|
6
|
+
region: "oss-cn-zhangjiakou",
|
|
7
|
+
//云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用STS方式来进行API访问
|
|
8
|
+
accessKeyId: "LTAI4G3QtdEdwkEbihBngAsK",
|
|
9
|
+
accessKeySecret: "OwgdVfc5PeCkIgqIdug660xmiSPchn",
|
|
10
|
+
// stsToken: '<Your securityToken(STS)>',
|
|
11
|
+
bucket: "guoranopen-zjk",
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
let IDX = 256, HEX = [], SIZE = 256, BUFFER;
|
|
15
|
+
while (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);
|
|
16
|
+
|
|
17
|
+
function uid(len) {
|
|
18
|
+
let i = 0, tmp = (len || 11);
|
|
19
|
+
if (!BUFFER || ((IDX + tmp) > SIZE * 2)) {
|
|
20
|
+
for (BUFFER = '', IDX = 0; i < SIZE; i++) {
|
|
21
|
+
BUFFER += HEX[Math.random() * 256 | 0];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return BUFFER.substring(IDX, IDX++ + tmp);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function dataFormat(fmt, date = new Date()) {
|
|
29
|
+
const o = {
|
|
30
|
+
"M+": date.getMonth() + 1, //月份
|
|
31
|
+
"d+": date.getDate(), //日
|
|
32
|
+
"h+": date.getHours(), //小时
|
|
33
|
+
"m+": date.getMinutes(), //分
|
|
34
|
+
"s+": date.getSeconds(), //秒
|
|
35
|
+
"q+": Math.floor((date.getMonth() + 3) / 3), //季度
|
|
36
|
+
"S": date.getMilliseconds() //毫秒
|
|
37
|
+
};
|
|
38
|
+
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
|
|
39
|
+
for (const k in o)
|
|
40
|
+
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
|
41
|
+
return fmt;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function pathGenerate(filename) {
|
|
45
|
+
return "front-oss/" + dataFormat("yyyy/MM/dd/hh/mm/") + uid(32) + "/" + filename;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
async function upload(ossConfig, data) {
|
|
50
|
+
let ossClient = new OSS(ossConfig);
|
|
51
|
+
// object-key可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。
|
|
52
|
+
let objectKey = pathGenerate(data.name);
|
|
53
|
+
let result = await ossClient.put(objectKey, data);
|
|
54
|
+
console.debug(result);
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function multipartUpload(ossConfig, data, callback,extCallback) {
|
|
59
|
+
let ossClient = new OSS(ossConfig);
|
|
60
|
+
// object-key可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。
|
|
61
|
+
let objectKey = pathGenerate(data.name);
|
|
62
|
+
let res = await ossClient.multipartUpload(objectKey, data, {
|
|
63
|
+
progress: function (p, checkpoint) {
|
|
64
|
+
console.debug('progress callback', p, checkpoint);
|
|
65
|
+
// 断点记录点。浏览器重启后无法直接继续上传,您需要手动触发上传操作。
|
|
66
|
+
if (callback && callback instanceof Function) {
|
|
67
|
+
callback(p, checkpoint,data,extCallback);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
return res;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function ossFileUrl(ossConfig, path, cname) {
|
|
75
|
+
if (cname == null) {
|
|
76
|
+
return '//' + ossConfig.bucket + '.' + ossConfig.region + '.aliyuncs.com/' + path;
|
|
77
|
+
} else {
|
|
78
|
+
return cname + '/' + path;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function uploadImageByBase64(ossConfig,blob) {
|
|
83
|
+
let ossClient = new OSS(ossConfig);
|
|
84
|
+
|
|
85
|
+
// object-key可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。
|
|
86
|
+
let objectKey = pathGenerate(new Date().getTime());
|
|
87
|
+
let result = ossClient.put(objectKey, blob);
|
|
88
|
+
console.debug(result);
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export {upload, multipartUpload, ossFileUrl,uploadImageByBase64,ossConfig}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
function base64toBlob(b64Data, contentType='', sliceSize=512) {
|
|
2
|
+
const byteCharacters = atob(b64Data);
|
|
3
|
+
const byteArrays = [];
|
|
4
|
+
|
|
5
|
+
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
|
|
6
|
+
const slice = byteCharacters.slice(offset, offset + sliceSize);
|
|
7
|
+
|
|
8
|
+
const byteNumbers = new Array(slice.length);
|
|
9
|
+
for (let i = 0; i < slice.length; i++) {
|
|
10
|
+
byteNumbers[i] = slice.charCodeAt(i);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const byteArray = new Uint8Array(byteNumbers);
|
|
14
|
+
|
|
15
|
+
byteArrays.push(byteArray);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const blob = new Blob(byteArrays, {type: contentType});
|
|
19
|
+
return blob;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export {base64toBlob}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
v-loading="loading"
|
|
4
|
-
:element-loading-text="showProgress"
|
|
4
|
+
:element-loading-text="showProgress"
|
|
5
|
+
id="dragon-video"
|
|
6
|
+
>
|
|
5
7
|
<!-- <video-player
|
|
6
8
|
class="video-player vjs-custom-skin"
|
|
7
9
|
x5-video-player-type="h5"
|
|
@@ -12,21 +14,24 @@
|
|
|
12
14
|
controls="controls"
|
|
13
15
|
:raw-controls="true"
|
|
14
16
|
x5-video-player-type="h5-page"
|
|
15
|
-
style="object-fit: contain;width: calc(100vw - 139px);height: 160px;background-color: black;border-radius: 25px;max-width: 230px;padding:
|
|
17
|
+
style="object-fit: contain;width: calc(100vw - 139px);height: 160px;background-color: black;border-radius: 25px;max-width: 230px;padding-left: 10px"
|
|
18
|
+
:poster="poster"
|
|
16
19
|
class="video-player vjs-custom-skin"
|
|
17
20
|
:id="msg.keyId+'key'">
|
|
18
|
-
<source :src="videoSrc"
|
|
21
|
+
<source :src="videoSrc"/>
|
|
19
22
|
</video>
|
|
20
|
-
<div id="output"></div>
|
|
21
23
|
</div>
|
|
22
24
|
</template>
|
|
23
25
|
<script>
|
|
26
|
+
import {ossConfig,uploadImageByBase64} from "../assets/js/AliyunlssUtil";
|
|
27
|
+
|
|
24
28
|
export default {
|
|
25
29
|
name: "ask_video",
|
|
26
30
|
props: ["msg", "url", "localUrl", "progress"],
|
|
27
31
|
data() {
|
|
28
32
|
return {
|
|
29
|
-
videoSrc:''
|
|
33
|
+
videoSrc:'',
|
|
34
|
+
poster:''
|
|
30
35
|
}
|
|
31
36
|
},
|
|
32
37
|
watch: {
|
|
@@ -45,14 +50,78 @@
|
|
|
45
50
|
mounted() {
|
|
46
51
|
this.$nextTick(()=>{
|
|
47
52
|
this.videoSrc = this.url ? this.url : this.localUrl
|
|
53
|
+
this.getImage()
|
|
54
|
+
|
|
48
55
|
})
|
|
49
56
|
|
|
50
57
|
},
|
|
51
58
|
methods:{
|
|
59
|
+
getImage(){
|
|
60
|
+
let that = this
|
|
61
|
+
var video;
|
|
62
|
+
var scale = 0.8;
|
|
63
|
+
|
|
64
|
+
var initialize = function() {
|
|
65
|
+
let id = that.msg.keyId+'key'
|
|
66
|
+
video = document.getElementById(id);
|
|
67
|
+
video.addEventListener('loadeddata',captureImage);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
var captureImage = function() {
|
|
71
|
+
var canvas = document.createElement("canvas");
|
|
72
|
+
canvas.width = video.videoWidth * scale;
|
|
73
|
+
canvas.height = video.videoHeight * scale;
|
|
74
|
+
canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
|
|
75
|
+
/*var img = document.createElement("img");
|
|
76
|
+
img.crossOrigin = 'anonymous'*/
|
|
77
|
+
/*img.src = canvas.toDataURL("image/png");*/
|
|
78
|
+
let base64 = canvas.toDataURL("image/png")
|
|
79
|
+
let blob = that.dataURLtoFile(base64,'name')
|
|
80
|
+
let promise = uploadImageByBase64(ossConfig,blob);
|
|
81
|
+
promise.then((res)=>{
|
|
82
|
+
console.debug("upload base64 reslut",res);
|
|
83
|
+
if (res&&res.url){
|
|
84
|
+
that.poster = res.url
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
/*output.appendChild(img);*/
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
initialize();
|
|
91
|
+
},
|
|
92
|
+
dataURLtoFile(dataurl, filename) {
|
|
93
|
+
var arr = dataurl.split(',');
|
|
94
|
+
var mime = arr[0].match(/:(.*?);/)[1];
|
|
95
|
+
var bstr = atob(arr[1]);
|
|
96
|
+
var n = bstr.length;
|
|
97
|
+
var u8arr = new Uint8Array(n);
|
|
98
|
+
while(n--){
|
|
99
|
+
u8arr[n] = bstr.charCodeAt(n);
|
|
100
|
+
}
|
|
101
|
+
//转换成file对象
|
|
102
|
+
return new File([u8arr], filename, {type:mime});
|
|
103
|
+
//转换成成blob对象
|
|
104
|
+
/*return new Blob([u8arr],{type:'image/png'});*/
|
|
105
|
+
}
|
|
52
106
|
}
|
|
53
107
|
|
|
54
108
|
}
|
|
55
109
|
</script>
|
|
56
110
|
<style scoped lang="less">
|
|
111
|
+
video::-webkit-media-controls-mute-button { display: none !important;}
|
|
112
|
+
#dragon-video{
|
|
113
|
+
position: relative;
|
|
114
|
+
#outputVideo{
|
|
115
|
+
position: absolute;
|
|
116
|
+
top: 0px;
|
|
117
|
+
/deep/img{
|
|
118
|
+
width: calc(100vw - 139px);
|
|
119
|
+
border-radius: 25px;
|
|
120
|
+
max-width: 230px;
|
|
121
|
+
height: 160px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
}
|
|
125
|
+
}
|
|
57
126
|
|
|
58
127
|
</style>
|