瀏覽代碼

添加上传文件大小限制

dusenyao 3 年之前
父節點
當前提交
20869b7ea4

+ 32 - 0
src/utils/validate.js

@@ -1,3 +1,5 @@
+import { getFileType } from '@/utils/filter';
+
 /**
  * @description 是否外链
  * @param {String} path
@@ -34,3 +36,33 @@ export function isAllowFileType(fileName) {
     suffix
   );
 }
+
+/**
+ * 文件类型大小限制
+ * @param { String } fileName
+ * @param { Number } fileSize
+ */
+export function fileTypeSizeLimit(fileName, fileSize) {
+  const type = getFileType(fileName);
+  const size = fileSize / 1048576;
+  // 图片
+  if (type.match(/^(png|jpe?g|gif|svg|webp)$/)) {
+    if (size > 2) return true;
+    return false;
+  }
+  // 文档
+  if (type.match(/^(docx?|xlsx?|pptx?|pdf|rtf)$/)) {
+    if (size > 20) return true;
+    return false;
+  }
+  // 音频
+  if (type.match(/^(mp3|wav|aac|ape|ogg)$/)) {
+    if (size > 20) return true;
+    return false;
+  }
+  // 视频
+  if (type.match(/^(mp4|avi|wmv|mpe?g|flv|mkv|f4v|rmvb|webm)$/)) {
+    if (size > 500) return true;
+    return false;
+  }
+}

+ 5 - 1
src/views/task_details/student/index.vue

@@ -174,7 +174,7 @@ import ShowFile from '@/common/show_file/index.vue';
 import { fileUpload, FileDownload } from '@/api/app';
 import { CreateEnterLiveRoomSession } from '@/api/live';
 import { GetTaskInfo, FillMyTaskExecuteInfo_Student } from '@/api/course';
-import { isAllowFileType } from '@/utils/validate';
+import { isAllowFileType, fileTypeSizeLimit } from '@/utils/validate';
 
 export default {
   components: {
@@ -317,6 +317,10 @@ export default {
         return;
       }
 
+      if (fileTypeSizeLimit(file.file.name, file.file.size)) {
+        return this.$message.warning(`${fileName}文件大小超出限制`);
+      }
+
       fileUpload('Open', file).then(({ file_info_list }) => {
         if (file_info_list.length > 0) {
           let { file_id, file_name, file_url } = file_info_list[0];

+ 3 - 0
src/views/teacher/create_course/step_table/CourseInfo.vue

@@ -293,6 +293,9 @@ export default {
       return isImage;
     },
     upload(file) {
+      if (file.file.size / 1048576 > 2) {
+        return this.$message.warning(`${file.file.name}文件大小超出限制`);
+      }
       fileUpload('Open', file).then(({ file_info_list }) => {
         if (file_info_list.length > 0) {
           const { file_url, file_id } = file_info_list[0];

+ 6 - 0
src/views/teacher/create_course/step_table/CreateTask.vue

@@ -339,6 +339,7 @@ import {
   DeleteLearningMaterialFromCSItem,
   DeleteTask
 } from '@/api/course';
+import { fileTypeSizeLimit } from '@/utils/validate';
 
 export default {
   name: 'CreateTask',
@@ -504,6 +505,11 @@ export default {
     },
 
     upload(file) {
+      console.log(file);
+      if (fileTypeSizeLimit(file.file.name, file.file.size)) {
+        return this.$message.warning(`${file.file.name}文件大小超出限制`);
+      }
+
       fileUpload('Open', file).then(({ file_info_list }) => {
         if (file_info_list.length > 0) {
           AddLearningMaterialToCSItem({

+ 6 - 1
src/views/teacher/create_course/step_table/NewTask.vue

@@ -248,6 +248,7 @@ import SelectCourse from '@/components/select/SelectCourse.vue';
 import { GetTaskTeachingTypeList, GetTaskModeList, GetTeacherListByCourseID, GetCourseStudentList } from '@/api/select';
 import { AddTaskToCSItem, GetTreeNodeInfo_BookChapterStruct, GetTaskInfo, UpdateTask, GetCSItem } from '@/api/course';
 import { fileUpload } from '@/api/app';
+import { fileTypeSizeLimit } from '@/utils/validate';
 
 export default {
   name: 'NewTask',
@@ -465,8 +466,12 @@ export default {
     },
 
     upload(file) {
-      let type = this.form.teaching_type;
+      if (fileTypeSizeLimit(file.file.name, file.file.size)) {
+        return this.$message.warning(`${file.file.name}文件大小超出限制`);
+      }
+
       fileUpload('Open', file).then(({ file_info_list }) => {
+        let type = this.form.teaching_type;
         if (type === 10) {
           this.liveForm.file_info_list = this.liveForm.file_info_list.concat(file_info_list);
           return;