|
@@ -1,223 +1,223 @@
|
|
|
-import request from '@/utils/request';
|
|
|
-import axios from 'axios';
|
|
|
-import COS from 'cos-js-sdk-v5';
|
|
|
-export const ossSwitch = 'tencent' as 'ks3' | 'tencent'; // 上传文件服务商
|
|
|
-const tencentBucket = 'daya-online-1303457149';
|
|
|
-
|
|
|
-/**
|
|
|
- * 管乐团 gyt/
|
|
|
- * 酷乐秀 klx/
|
|
|
- * 课堂乐器 ktqy/
|
|
|
- * 管乐迷 gym/
|
|
|
- */
|
|
|
-
|
|
|
-// 定义一个cos 对象
|
|
|
-/**
|
|
|
- * 获取上传文件签名
|
|
|
- * @param params 上传对应参数
|
|
|
- * { filename: fileName,
|
|
|
- bucketName: props.bucketName,
|
|
|
- postData: {
|
|
|
- filename: fileName,
|
|
|
- acl: 'public-read',
|
|
|
- key: fileName,
|
|
|
- unknowValueField: []
|
|
|
- }}
|
|
|
- * @param oss 服务商 ks3 tencent
|
|
|
- * @returns ”{'signatur'':'',''kssAccessKeyI'':'',''policy': '' }“
|
|
|
- */
|
|
|
-export const getUploadSign = async (params: any) => {
|
|
|
- const { bucketName, filename, postData } = params;
|
|
|
- const ossType = ossSwitch;
|
|
|
- let bucket = bucketName;
|
|
|
- let file = filename;
|
|
|
- // const key = postData.key;
|
|
|
- let tempPostData: any = {};
|
|
|
- if (ossType === 'tencent') {
|
|
|
- bucket = tencentBucket;
|
|
|
- file = 'ktqy/' + filename;
|
|
|
-
|
|
|
- tempPostData = {
|
|
|
- key: 'ktqy/' + postData.key
|
|
|
- };
|
|
|
- } else {
|
|
|
- tempPostData = postData;
|
|
|
- }
|
|
|
- return request.post('/edu-app/open/getUploadSign', {
|
|
|
- data: {
|
|
|
- postData: tempPostData,
|
|
|
- pluginName: ossType,
|
|
|
- bucketName: bucket,
|
|
|
- filename: file
|
|
|
- },
|
|
|
- params: { pluginName: ossType }
|
|
|
- });
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 使用组件上传时,调用方法
|
|
|
- * @param param0
|
|
|
- */
|
|
|
-export const onFileUpload = ({
|
|
|
- file,
|
|
|
- action,
|
|
|
- data,
|
|
|
- onProgress,
|
|
|
- onFinish,
|
|
|
- onError
|
|
|
-}: any) => {
|
|
|
- if (ossSwitch === 'ks3') {
|
|
|
- const fileParams = {
|
|
|
- policy: data.policy,
|
|
|
- signature: data.signature,
|
|
|
- key: data.key,
|
|
|
- acl: 'public-read',
|
|
|
- KSSAccessKeyId: data.KSSAccessKeyId,
|
|
|
- name: data.name
|
|
|
- } as any;
|
|
|
- const formData = new FormData();
|
|
|
- for (const key in fileParams) {
|
|
|
- formData.append(key, fileParams[key]);
|
|
|
- }
|
|
|
- formData.append('file', data.file as File);
|
|
|
- axios
|
|
|
- .post(action as string, formData, {
|
|
|
- onUploadProgress: ({ progress }) => {
|
|
|
- console.log(progress);
|
|
|
- onProgress({ percent: Math.ceil((progress || 0) * 100) });
|
|
|
- }
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- file.url = action + data.key;
|
|
|
- onFinish();
|
|
|
- })
|
|
|
- .catch(error => {
|
|
|
- onError(error);
|
|
|
- });
|
|
|
- } else {
|
|
|
- const cos = new COS({
|
|
|
- Domain: 'https://oss.dayaedu.com',
|
|
|
- Protocol: 'https',
|
|
|
- // getAuthorization 必选参数
|
|
|
- getAuthorization: async (options, callback: any) => {
|
|
|
- callback({ Authorization: data.signature });
|
|
|
- }
|
|
|
- });
|
|
|
- cos
|
|
|
- .uploadFile({
|
|
|
- Bucket: tencentBucket /* 填写自己的 bucket,必须字段 */,
|
|
|
- Region: 'ap-nanjing' /* 存储桶所在地域,必须字段 */,
|
|
|
- Key: `ktqy/${data.name}`,
|
|
|
- /* 存储在桶里的对象键(例如:1.jpg,a/b/test.txt,图片.jpg)支持中文,必须字段 */
|
|
|
- Body: data.file.file, // 上传文件对象
|
|
|
- SliceSize:
|
|
|
- 1024 *
|
|
|
- 1024 *
|
|
|
- 500 /* 触发分块上传的阈值,超过5MB使用分块上传,小于5MB使用简单上传。可自行设置,非必须 */,
|
|
|
- onProgress: function (progressData) {
|
|
|
- onProgress({ percent: Math.ceil((progressData.percent || 0) * 100) });
|
|
|
- }
|
|
|
- })
|
|
|
- .then((res: any) => {
|
|
|
- // file.url = 'https://' + res.Location;
|
|
|
- if (res.Location?.indexOf('http') >= 0) {
|
|
|
- file.url = res.Location;
|
|
|
- } else {
|
|
|
- file.url = 'https://' + res.Location;
|
|
|
- }
|
|
|
- onFinish();
|
|
|
- })
|
|
|
- .catch(error => {
|
|
|
- console.log(error, 'error');
|
|
|
- onError();
|
|
|
- });
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-export const onOnlyFileUpload = async (action: string, params: any) => {
|
|
|
- if (ossSwitch === 'ks3') {
|
|
|
- const fileParams = {
|
|
|
- policy: params.policy,
|
|
|
- signature: params.signature,
|
|
|
- key: params.key,
|
|
|
- acl: 'public-read',
|
|
|
- KSSAccessKeyId: params.KSSAccessKeyId,
|
|
|
- name: params.name
|
|
|
- } as any;
|
|
|
- const formData = new FormData();
|
|
|
- for (const key in fileParams) {
|
|
|
- formData.append(key, fileParams[key]);
|
|
|
- }
|
|
|
- formData.append('file', params.file as File);
|
|
|
- let file = '';
|
|
|
- let errorObj: any = null;
|
|
|
- await axios
|
|
|
- .post(action as string, formData, {
|
|
|
- // onUploadProgress: ({ progress }) => {
|
|
|
- // console.log(progress);
|
|
|
- // onProgress({ percent: Math.ceil((progress || 0) * 100) });
|
|
|
- // }
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- file = action + params.key;
|
|
|
- })
|
|
|
- .catch(error => {
|
|
|
- // onError(error);
|
|
|
- errorObj = error;
|
|
|
- // throw new Error(error);
|
|
|
- });
|
|
|
- if (file) {
|
|
|
- return file;
|
|
|
- } else {
|
|
|
- throw new Error(errorObj);
|
|
|
- }
|
|
|
- return file;
|
|
|
- } else {
|
|
|
- let file = '';
|
|
|
- let errorObj: any = null;
|
|
|
- const cos = new COS({
|
|
|
- Domain: 'https://oss.dayaedu.com',
|
|
|
- Protocol: 'https',
|
|
|
- // getAuthorization 必选参数
|
|
|
- getAuthorization: async (options, callback: any) => {
|
|
|
- callback({ Authorization: params.signature });
|
|
|
- }
|
|
|
- });
|
|
|
- await cos
|
|
|
- .uploadFile({
|
|
|
- Bucket: tencentBucket /* 填写自己的 bucket,必须字段 */,
|
|
|
- Region: 'ap-nanjing' /* 存储桶所在地域,必须字段 */,
|
|
|
- Key: `ktqy/${params.name}`,
|
|
|
- /* 存储在桶里的对象键(例如:1.jpg,a/b/test.txt,图片.jpg)支持中文,必须字段 */
|
|
|
- Body: params.file, // 上传文件对象
|
|
|
- SliceSize:
|
|
|
- 1024 *
|
|
|
- 1024 *
|
|
|
- 500 /* 触发分块上传的阈值,超过5MB使用分块上传,小于5MB使用简单上传。可自行设置,非必须 */
|
|
|
- // onProgress: function (progressData) {
|
|
|
- // onProgress({ percent: Math.ceil((progressData.percent || 0) * 100) });
|
|
|
- // }
|
|
|
- })
|
|
|
- .then((res: any) => {
|
|
|
- // file.url = 'https://' + res.Location;
|
|
|
- // file = 'https://' + res.Location;
|
|
|
- if (res.Location?.indexOf('http') >= 0) {
|
|
|
- file = res.Location;
|
|
|
- } else {
|
|
|
- file = 'https://' + res.Location;
|
|
|
- }
|
|
|
- // onFinish();
|
|
|
- })
|
|
|
- .catch(error => {
|
|
|
- // console.log(error, 'error');
|
|
|
- // onError();
|
|
|
- // throw new Error(error);
|
|
|
- errorObj = error;
|
|
|
- });
|
|
|
- if (file) {
|
|
|
- return file;
|
|
|
- } else {
|
|
|
- throw new Error(errorObj);
|
|
|
- }
|
|
|
- }
|
|
|
-};
|
|
|
+import request from '@/utils/request';
|
|
|
+import axios from 'axios';
|
|
|
+import COS from 'cos-js-sdk-v5';
|
|
|
+export const ossSwitch = 'tencent' as 'ks3' | 'tencent'; // 上传文件服务商
|
|
|
+const tencentBucket = 'daya-online-1303457149';
|
|
|
+
|
|
|
+/**
|
|
|
+ * 管乐团 gyt/
|
|
|
+ * 酷乐秀 klx/
|
|
|
+ * 课堂乐器 ktyq/
|
|
|
+ * 管乐迷 gym/
|
|
|
+ */
|
|
|
+
|
|
|
+// 定义一个cos 对象
|
|
|
+/**
|
|
|
+ * 获取上传文件签名
|
|
|
+ * @param params 上传对应参数
|
|
|
+ * { filename: fileName,
|
|
|
+ bucketName: props.bucketName,
|
|
|
+ postData: {
|
|
|
+ filename: fileName,
|
|
|
+ acl: 'public-read',
|
|
|
+ key: fileName,
|
|
|
+ unknowValueField: []
|
|
|
+ }}
|
|
|
+ * @param oss 服务商 ks3 tencent
|
|
|
+ * @returns ”{'signatur'':'',''kssAccessKeyI'':'',''policy': '' }“
|
|
|
+ */
|
|
|
+export const getUploadSign = async (params: any) => {
|
|
|
+ const { bucketName, filename, postData } = params;
|
|
|
+ const ossType = ossSwitch;
|
|
|
+ let bucket = bucketName;
|
|
|
+ let file = filename;
|
|
|
+ // const key = postData.key;
|
|
|
+ let tempPostData: any = {};
|
|
|
+ if (ossType === 'tencent') {
|
|
|
+ bucket = tencentBucket;
|
|
|
+ file = 'ktyq/' + filename;
|
|
|
+
|
|
|
+ tempPostData = {
|
|
|
+ key: 'ktyq/' + postData.key
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ tempPostData = postData;
|
|
|
+ }
|
|
|
+ return request.post('/edu-app/open/getUploadSign', {
|
|
|
+ data: {
|
|
|
+ postData: tempPostData,
|
|
|
+ pluginName: ossType,
|
|
|
+ bucketName: bucket,
|
|
|
+ filename: file
|
|
|
+ },
|
|
|
+ params: { pluginName: ossType }
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * 使用组件上传时,调用方法
|
|
|
+ * @param param0
|
|
|
+ */
|
|
|
+export const onFileUpload = ({
|
|
|
+ file,
|
|
|
+ action,
|
|
|
+ data,
|
|
|
+ onProgress,
|
|
|
+ onFinish,
|
|
|
+ onError
|
|
|
+}: any) => {
|
|
|
+ if (ossSwitch === 'ks3') {
|
|
|
+ const fileParams = {
|
|
|
+ policy: data.policy,
|
|
|
+ signature: data.signature,
|
|
|
+ key: data.key,
|
|
|
+ acl: 'public-read',
|
|
|
+ KSSAccessKeyId: data.KSSAccessKeyId,
|
|
|
+ name: data.name
|
|
|
+ } as any;
|
|
|
+ const formData = new FormData();
|
|
|
+ for (const key in fileParams) {
|
|
|
+ formData.append(key, fileParams[key]);
|
|
|
+ }
|
|
|
+ formData.append('file', data.file as File);
|
|
|
+ axios
|
|
|
+ .post(action as string, formData, {
|
|
|
+ onUploadProgress: ({ progress }) => {
|
|
|
+ console.log(progress);
|
|
|
+ onProgress({ percent: Math.ceil((progress || 0) * 100) });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ file.url = action + data.key;
|
|
|
+ onFinish();
|
|
|
+ })
|
|
|
+ .catch(error => {
|
|
|
+ onError(error);
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ const cos = new COS({
|
|
|
+ Domain: 'https://oss.dayaedu.com',
|
|
|
+ Protocol: 'https',
|
|
|
+ // getAuthorization 必选参数
|
|
|
+ getAuthorization: async (options, callback: any) => {
|
|
|
+ callback({ Authorization: data.signature });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ cos
|
|
|
+ .uploadFile({
|
|
|
+ Bucket: tencentBucket /* 填写自己的 bucket,必须字段 */,
|
|
|
+ Region: 'ap-nanjing' /* 存储桶所在地域,必须字段 */,
|
|
|
+ Key: `ktyq/${data.name}`,
|
|
|
+ /* 存储在桶里的对象键(例如:1.jpg,a/b/test.txt,图片.jpg)支持中文,必须字段 */
|
|
|
+ Body: data.file.file, // 上传文件对象
|
|
|
+ SliceSize:
|
|
|
+ 1024 *
|
|
|
+ 1024 *
|
|
|
+ 500 /* 触发分块上传的阈值,超过5MB使用分块上传,小于5MB使用简单上传。可自行设置,非必须 */,
|
|
|
+ onProgress: function (progressData) {
|
|
|
+ onProgress({ percent: Math.ceil((progressData.percent || 0) * 100) });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .then((res: any) => {
|
|
|
+ // file.url = 'https://' + res.Location;
|
|
|
+ if (res.Location?.indexOf('http') >= 0) {
|
|
|
+ file.url = res.Location;
|
|
|
+ } else {
|
|
|
+ file.url = 'https://' + res.Location;
|
|
|
+ }
|
|
|
+ onFinish();
|
|
|
+ })
|
|
|
+ .catch(error => {
|
|
|
+ console.log(error, 'error');
|
|
|
+ onError();
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+export const onOnlyFileUpload = async (action: string, params: any) => {
|
|
|
+ if (ossSwitch === 'ks3') {
|
|
|
+ const fileParams = {
|
|
|
+ policy: params.policy,
|
|
|
+ signature: params.signature,
|
|
|
+ key: params.key,
|
|
|
+ acl: 'public-read',
|
|
|
+ KSSAccessKeyId: params.KSSAccessKeyId,
|
|
|
+ name: params.name
|
|
|
+ } as any;
|
|
|
+ const formData = new FormData();
|
|
|
+ for (const key in fileParams) {
|
|
|
+ formData.append(key, fileParams[key]);
|
|
|
+ }
|
|
|
+ formData.append('file', params.file as File);
|
|
|
+ let file = '';
|
|
|
+ let errorObj: any = null;
|
|
|
+ await axios
|
|
|
+ .post(action as string, formData, {
|
|
|
+ // onUploadProgress: ({ progress }) => {
|
|
|
+ // console.log(progress);
|
|
|
+ // onProgress({ percent: Math.ceil((progress || 0) * 100) });
|
|
|
+ // }
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ file = action + params.key;
|
|
|
+ })
|
|
|
+ .catch(error => {
|
|
|
+ // onError(error);
|
|
|
+ errorObj = error;
|
|
|
+ // throw new Error(error);
|
|
|
+ });
|
|
|
+ if (file) {
|
|
|
+ return file;
|
|
|
+ } else {
|
|
|
+ throw new Error(errorObj);
|
|
|
+ }
|
|
|
+ return file;
|
|
|
+ } else {
|
|
|
+ let file = '';
|
|
|
+ let errorObj: any = null;
|
|
|
+ const cos = new COS({
|
|
|
+ Domain: 'https://oss.dayaedu.com',
|
|
|
+ Protocol: 'https',
|
|
|
+ // getAuthorization 必选参数
|
|
|
+ getAuthorization: async (options, callback: any) => {
|
|
|
+ callback({ Authorization: params.signature });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ await cos
|
|
|
+ .uploadFile({
|
|
|
+ Bucket: tencentBucket /* 填写自己的 bucket,必须字段 */,
|
|
|
+ Region: 'ap-nanjing' /* 存储桶所在地域,必须字段 */,
|
|
|
+ Key: `ktyq/${params.name}`,
|
|
|
+ /* 存储在桶里的对象键(例如:1.jpg,a/b/test.txt,图片.jpg)支持中文,必须字段 */
|
|
|
+ Body: params.file, // 上传文件对象
|
|
|
+ SliceSize:
|
|
|
+ 1024 *
|
|
|
+ 1024 *
|
|
|
+ 500 /* 触发分块上传的阈值,超过5MB使用分块上传,小于5MB使用简单上传。可自行设置,非必须 */
|
|
|
+ // onProgress: function (progressData) {
|
|
|
+ // onProgress({ percent: Math.ceil((progressData.percent || 0) * 100) });
|
|
|
+ // }
|
|
|
+ })
|
|
|
+ .then((res: any) => {
|
|
|
+ // file.url = 'https://' + res.Location;
|
|
|
+ // file = 'https://' + res.Location;
|
|
|
+ if (res.Location?.indexOf('http') >= 0) {
|
|
|
+ file = res.Location;
|
|
|
+ } else {
|
|
|
+ file = 'https://' + res.Location;
|
|
|
+ }
|
|
|
+ // onFinish();
|
|
|
+ })
|
|
|
+ .catch(error => {
|
|
|
+ // console.log(error, 'error');
|
|
|
+ // onError();
|
|
|
+ // throw new Error(error);
|
|
|
+ errorObj = error;
|
|
|
+ });
|
|
|
+ if (file) {
|
|
|
+ return file;
|
|
|
+ } else {
|
|
|
+ throw new Error(errorObj);
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|