integrated_traffic_vue/src/assets/js/useAliYunUpload.js

84 lines
2.4 KiB
JavaScript

import { setVideo, setVideoRefresh } from "@/request/api.js";
import { ElLoading, ElMessage } from "element-plus";
export default function useAliYunUpload({
addFileSuccess,
onUploadstarted,
onUploadSucceed,
onUploadFailed,
onUploadCanceled,
onUploadProgress,
onUploadTokenExpired,
onUploadEnd,
}) {
let loading;
const uploader = new window.AliyunUpload.Vod({
timeout: 60000,
partSize: 1048576,
parallel: 5,
retryCount: 3,
retryDuration: 2,
region: "cn-shanghai",
userId: "1663991162946873",
addFileSuccess(uploadInfo) {
addFileSuccess && addFileSuccess(uploadInfo);
},
async onUploadstarted(uploadInfo) {
onUploadstarted && onUploadstarted();
let uploadAddress;
let uploadAuth;
let videoId;
if (!uploadInfo.videoId) {
const resData = await setVideo({
Title: uploadInfo.file.name,
FileName: uploadInfo.file.name,
});
uploadAddress = resData.data.uploadAddress;
uploadAuth = resData.data.uploadAuth;
videoId = resData.data.videoId;
} else {
const resData = await setVideoRefresh({
Title: uploadInfo.file.name,
FileName: uploadInfo.file.name,
VideoId: uploadInfo.videoId,
});
uploadAddress = resData.data.uploadAddress;
uploadAuth = resData.data.uploadAuth;
videoId = resData.data.videoId;
}
uploader.setUploadAuthAndAddress(
uploadInfo,
uploadAuth,
uploadAddress,
videoId
);
loading = ElLoading.service({
lock: true,
text: "加载中...",
background: "rgba(0, 0, 0, 0.5)",
});
},
onUploadSucceed(uploadInfo) {
loading.close();
onUploadSucceed && onUploadSucceed(uploadInfo);
},
onUploadFailed(uploadInfo, code, message) {
ElMessage.success("上传失败,请重新上传");
onUploadFailed && onUploadFailed(uploadInfo, code, message);
},
onUploadCanceled(uploadInfo, code, message) {
onUploadCanceled && onUploadCanceled(uploadInfo, code, message);
},
onUploadProgress(uploadInfo, totalSize, progress) {
onUploadProgress && onUploadProgress(uploadInfo, totalSize, progress);
},
onUploadTokenExpired(uploadInfo) {
onUploadTokenExpired && onUploadTokenExpired(uploadInfo);
},
onUploadEnd(uploadInfo) {
onUploadEnd && onUploadEnd(uploadInfo);
},
});
return uploader;
}