|
@@ -222,7 +222,7 @@ export default defineComponent({
|
|
|
reader.readAsDataURL(img);
|
|
|
};
|
|
|
|
|
|
- const onFinish = (options: any) => {
|
|
|
+ const onFinish = async (options: any) => {
|
|
|
const url = ossUploadUrl + state.key;
|
|
|
const type = formatUrlType(url);
|
|
|
let coverImg = '';
|
|
@@ -232,8 +232,8 @@ export default defineComponent({
|
|
|
coverImg = PageEnum.SONG_DEFAULT_COVER;
|
|
|
} else if (type === 'VIDEO') {
|
|
|
// 获取视频封面图
|
|
|
- // await getVideoCoverImg();
|
|
|
- coverImg = 'https://gyt.ks3-cn-beijing.ksyuncs.com/1688997532875.png';
|
|
|
+ await getVideoCoverImg();
|
|
|
+ // coverImg = 'https://gyt.ks3-cn-beijing.ksyuncs.com/1688997532875.png';
|
|
|
}
|
|
|
emit('update:fileList', url);
|
|
|
emit('readFileInputEventAsArrayBuffer', tempFiileBuffer.value);
|
|
@@ -248,77 +248,80 @@ export default defineComponent({
|
|
|
};
|
|
|
|
|
|
// 获取文件流
|
|
|
- // const base64ImgtoFile = (dataurl: string, filename = 'file') => {
|
|
|
- // const arr: any = dataurl.split(',');
|
|
|
- // const mime = arr[0].match(/:(.*?);/)[1];
|
|
|
- // const suffix = mime.split('/')[1];
|
|
|
- // const bstr = atob(arr[1]);
|
|
|
- // let n = bstr.length;
|
|
|
- // const u8arr = new Uint8Array(n);
|
|
|
- // while (n--) {
|
|
|
- // u8arr[n] = bstr.charCodeAt(n);
|
|
|
- // }
|
|
|
- // return new File([u8arr], `${filename}.${suffix}`, {
|
|
|
- // type: mime
|
|
|
- // });
|
|
|
- // };
|
|
|
+ const base64ImgtoFile = (dataurl: string, filename = 'file') => {
|
|
|
+ const arr: any = dataurl.split(',');
|
|
|
+ const mime = arr[0].match(/:(.*?);/)[1];
|
|
|
+ const suffix = mime.split('/')[1];
|
|
|
+ const bstr = atob(arr[1]);
|
|
|
+ let n = bstr.length;
|
|
|
+ const u8arr = new Uint8Array(n);
|
|
|
+ while (n--) {
|
|
|
+ u8arr[n] = bstr.charCodeAt(n);
|
|
|
+ }
|
|
|
+ return new File([u8arr], `${filename}.${suffix}`, {
|
|
|
+ type: mime
|
|
|
+ });
|
|
|
+ };
|
|
|
|
|
|
- // const getVideoMsg = (file: any) => {
|
|
|
- // return new Promise(resolve => {
|
|
|
- // let dataURL = '';
|
|
|
- // const videoElement = document.createElement('video');
|
|
|
- // videoElement.currentTime = 1;
|
|
|
- // videoElement.src = URL.createObjectURL(file);
|
|
|
- // videoElement.addEventListener('loadeddata', function () {
|
|
|
- // const canvas: any = document.createElement('canvas'),
|
|
|
- // width = videoElement.videoWidth, //canvas的尺寸和图片一样
|
|
|
- // height = videoElement.videoHeight;
|
|
|
- // canvas.width = width;
|
|
|
- // canvas.height = height;
|
|
|
- // canvas.getContext('2d').drawImage(videoElement, 0, 0, width, height); //绘制canvas
|
|
|
- // dataURL = canvas.toDataURL('image/jpeg'); //转换为base64
|
|
|
- // resolve(dataURL);
|
|
|
- // });
|
|
|
- // });
|
|
|
- // };
|
|
|
+ const getVideoMsg = (file: any) => {
|
|
|
+ return new Promise(resolve => {
|
|
|
+ let dataURL = '';
|
|
|
+ const videoElement = document.createElement('video');
|
|
|
+ videoElement.currentTime = 1;
|
|
|
+ videoElement.src = URL.createObjectURL(file);
|
|
|
+ videoElement.addEventListener('loadeddata', function () {
|
|
|
+ const canvas: any = document.createElement('canvas'),
|
|
|
+ width = videoElement.videoWidth, //canvas的尺寸和图片一样
|
|
|
+ height = videoElement.videoHeight;
|
|
|
+ canvas.width = width;
|
|
|
+ canvas.height = height;
|
|
|
+ canvas.getContext('2d').drawImage(videoElement, 0, 0, width, height); //绘制canvas
|
|
|
+ dataURL = canvas.toDataURL('image/jpeg'); //转换为base64
|
|
|
+ resolve(dataURL);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ };
|
|
|
|
|
|
- // const getVideoCoverImg = async () => {
|
|
|
- // try {
|
|
|
- // btnLoading.value = true;
|
|
|
- // const imgBlob: any = await getVideoMsg(tempFiileBuffer.value);
|
|
|
- // const fileName = `${props.path}${Date.now() + '.png'}`;
|
|
|
- // const obj = {
|
|
|
- // filename: fileName,
|
|
|
- // bucketName: props.bucketName,
|
|
|
- // postData: {
|
|
|
- // filename: fileName,
|
|
|
- // acl: 'public-read',
|
|
|
- // key: fileName,
|
|
|
- // unknowValueField: []
|
|
|
- // }
|
|
|
- // };
|
|
|
- // const { data } = await policy(obj);
|
|
|
+ const getVideoCoverImg = async () => {
|
|
|
+ try {
|
|
|
+ btnLoading.value = true;
|
|
|
+ const imgBlob: any = await getVideoMsg(tempFiileBuffer.value);
|
|
|
+ console.log(imgBlob, 'downloading');
|
|
|
+ const fileName = `${props.path}${Date.now() + '.jpeg'}`;
|
|
|
+ const obj = {
|
|
|
+ filename: fileName,
|
|
|
+ bucketName: props.bucketName,
|
|
|
+ postData: {
|
|
|
+ filename: fileName,
|
|
|
+ acl: 'public-read',
|
|
|
+ key: fileName,
|
|
|
+ unknowValueField: []
|
|
|
+ }
|
|
|
+ };
|
|
|
+ const { data } = await policy(obj);
|
|
|
|
|
|
- // const fileParams = {
|
|
|
- // policy: data.policy,
|
|
|
- // signature: data.signature,
|
|
|
- // key: fileName,
|
|
|
- // KSSAccessKeyId: data.kssAccessKeyId,
|
|
|
- // name: fileName
|
|
|
- // } as any;
|
|
|
- // const formData = new FormData();
|
|
|
- // for (const key in fileParams) {
|
|
|
- // formData.append(key, fileParams[key]);
|
|
|
- // }
|
|
|
- // formData.append('file', base64ImgtoFile(imgBlob));
|
|
|
- // await axios.post(ossUploadUrl, formData);
|
|
|
+ const fileParams = {
|
|
|
+ policy: data.policy,
|
|
|
+ signature: data.signature,
|
|
|
+ key: fileName,
|
|
|
+ KSSAccessKeyId: data.kssAccessKeyId,
|
|
|
+ name: fileName
|
|
|
+ } as any;
|
|
|
+ const formData = new FormData();
|
|
|
+ for (const key in fileParams) {
|
|
|
+ formData.append(key, fileParams[key]);
|
|
|
+ }
|
|
|
+ console.log(base64ImgtoFile(imgBlob), 'base64ImgtoFile(imgBlob)');
|
|
|
+ formData.append('file', base64ImgtoFile(imgBlob), fileName);
|
|
|
+ await axios.post(ossUploadUrl, formData);
|
|
|
|
|
|
- // const url = ossUploadUrl + fileName;
|
|
|
- // return url;
|
|
|
- // } finally {
|
|
|
- // btnLoading.value = false;
|
|
|
- // }
|
|
|
- // };
|
|
|
+ const url = ossUploadUrl + fileName;
|
|
|
+ console.log(url, '12312312');
|
|
|
+ return url;
|
|
|
+ } finally {
|
|
|
+ btnLoading.value = false;
|
|
|
+ }
|
|
|
+ };
|
|
|
|
|
|
const onRemove = async () => {
|
|
|
emit('update:fileList', '');
|