lsc 3 weeks ago
parent
commit
8ba5ec147b

+ 34 - 42
src/components/pages/knowledge/fileBox.vue

@@ -322,7 +322,6 @@ export default {
       this.getData();
     },
     async beforeUpload(event) {
-      // const loading = this.openLoading();
       let file = "";
       let cfindex2 = 0;
       this.proVisible = true;
@@ -330,48 +329,43 @@ export default {
         "csv","xls","xlsx","md","pdf","txt","ppt","pptx","docx"
       ];
       
-      for (var cfindex = 0; cfindex < event.target.files.length; cfindex++) {
-        file = event.target.files[cfindex];
-        const fileExtension = file.name.split('.').pop().toLowerCase();
-        
-        if (!allowedExtensions.includes(fileExtension)) {
-          this.$message.error(`不支持的文件格式: ${file.name}`);
+      const uploadFiles = async (files) => {
+        for (let cfindex = 0; cfindex < files.length; cfindex++) {
+          file = files[cfindex];
+          const fileExtension = file.name.split('.').pop().toLowerCase();
+          
+          if (!allowedExtensions.includes(fileExtension)) {
+            this.$message.error(`不支持的文件格式: ${file.name}`);
+            cfindex2++;
+            continue; // 跳过不支持的文件
+          }
+          let uuid = uuidv4();
+          let formData = new FormData();
+          const timestamp = Date.now();
+          const baseName = file.name.slice(0, -(fileExtension.length + 1));
+          formData.append('file', new File([file], `${baseName}${timestamp}.${fileExtension}`));
+          formData.append('collection_ids', JSON.stringify([this.moFolderid]));
+          formData.append('id', uuid);
+          formData.append('metadata', JSON.stringify({title: file.name}));
+          formData.append('ingestion_mode', "fast");
+
+          // 使用同步方式上传文件
+          await this.uploadFile(formData, file.name, uuid);
           cfindex2++;
-          setTimeout(() => {
-            if (
-              cfindex2 == event.target.files.length ||
-              cfindex2 > event.target.files.length
-            ) {
-              this.proVisible = false;
-            }
-          }, 1000);
-          continue; // 跳过不支持的文件
-        }
-        let uuid = uuidv4();
-        let formData = new FormData();
-        const timestamp = Date.now();
-        const baseName = file.name.slice(0, -(fileExtension.length + 1));
-        formData.append('file', new File([file], `${baseName}${timestamp}.${fileExtension}`));
-        formData.append('collection_ids', JSON.stringify([this.moFolderid]));
-        formData.append('id', uuid);
-        formData.append('metadata', JSON.stringify({title: file.name}));
-        formData.append('ingestion_mode', "fast");
-
-        // 使用同步方式上传文件
-        await this.uploadFile(formData, file.name, uuid);
-        cfindex2++;
-
-        setTimeout(() => {
-          if (
-            cfindex2 == event.target.files.length ||
-            cfindex2 > event.target.files.length
-          ) {
-            this.proVisible = false;
+
+          // 每5秒上传一次
+          if (cfindex < files.length - 1) {
+            await new Promise(resolve => setTimeout(resolve, 5000));
           }
-        }, 1000);
-      }
+        }
+        this.proVisible = false;
+        this.$message.success("上传成功");
+        await this.getData(); // 在上传完文件后再调用getData
+      };
+
+      await uploadFiles(event.target.files);
     },
-    async uploadFile(formData, name, uuid) {
+    async uploadFile(formData, name, uuid, bool) {
       try {
         // 确保formData是正确的格式
         // this.$store.state.fileApi + "upload"
@@ -389,8 +383,6 @@ export default {
           mofid: "",
         }
         const res2 = await this.ajax.post(this.$store.state.api + 'addFile', [params]);
-        this.$message.success("上传成功");
-        this.getData();
       } catch (err) {
         console.error(err);
         this.$message.error("上传失败");

+ 37 - 60
src/components/pages/knowledge/folderFileBox.vue

@@ -283,7 +283,6 @@ export default {
       this.getData();
     },
     async beforeUpload(event) {
-      // const loading = this.openLoading();
       let file = "";
       let cfindex2 = 0;
       this.proVisible = true;
@@ -291,85 +290,63 @@ export default {
         "csv","xls","xlsx","md","pdf","txt","ppt","pptx","docx"
       ];
       
-      for (var cfindex = 0; cfindex < event.target.files.length; cfindex++) {
-        file = event.target.files[cfindex];
-        const fileExtension = file.name.split('.').pop().toLowerCase();
-        
-        if (!allowedExtensions.includes(fileExtension)) {
-          this.$message.error(`不支持的文件格式: ${file.name}`);
+      const uploadFiles = async (files) => {
+        for (let cfindex = 0; cfindex < files.length; cfindex++) {
+          file = files[cfindex];
+          const fileExtension = file.name.split('.').pop().toLowerCase();
+          
+          if (!allowedExtensions.includes(fileExtension)) {
+            this.$message.error(`不支持的文件格式: ${file.name}`);
+            cfindex2++;
+            continue; // 跳过不支持的文件
+          }
+
+          let uuid = uuidv4();
+          let formData = new FormData();
+          const timestamp = Date.now();
+          const baseName = file.name.slice(0, -(fileExtension.length + 1));
+          let string = [this.folderid, this.moFolderid].filter(id => id);
+          formData.append('file', new File([file], `${baseName}${timestamp}.${fileExtension}`));
+          formData.append('collection_ids', JSON.stringify(string));
+          formData.append('id', uuid);
+          formData.append('metadata', JSON.stringify({title: file.name, collection_ids: string}));
+          formData.append('ingestion_mode', "fast");
+
+          // 使用同步方式上传文件
+          await this.uploadFile(formData, file.name, uuid);
           cfindex2++;
-          setTimeout(() => {
-            if (
-              cfindex2 == event.target.files.length ||
-              cfindex2 > event.target.files.length
-            ) {
-              this.proVisible = false;
-            }
-          }, 1000);
-          continue; // 跳过不支持的文件
-        }
 
-        let uuid = uuidv4();
-        let formData = new FormData();
-        const timestamp = Date.now();
-        const baseName = file.name.slice(0, -(fileExtension.length + 1));
-        let string = [this.folderid, this.moFolderid].filter(id => id)
-        // if(string.length > 1){
-        //   string = JSON.stringify([string[0], string[1]])
-        // }
-        formData.append('file', new File([file], `${baseName}${timestamp}.${fileExtension}`));
-        formData.append('collection_ids', JSON.stringify(string));
-        formData.append('id', uuid);
-        formData.append('metadata', JSON.stringify({title: file.name, collection_ids: string}));
-        formData.append('ingestion_mode', "fast");
-
-// , this.moFolderid
-        // 使用同步方式上传文件
-        await this.uploadFile(formData, file.name, uuid);
-        cfindex2++;
-
-        setTimeout(() => {
-          if (
-            cfindex2 == event.target.files.length ||
-            cfindex2 > event.target.files.length
-          ) {
-            this.proVisible = false;
+          // 每5秒上传一次
+          if (cfindex < files.length - 1) {
+            await new Promise(resolve => setTimeout(resolve, 5000));
           }
-        }, 1000);
-      }
+        }
+        this.proVisible = false;
+        this.$message.success("上传成功");
+        this.getData(); // 在上传完所有文件后再调用getData
+      };
+
+      await uploadFiles(event.target.files);
     },
     async uploadFile(formData, name, uuid) {
       try {
-        // 确保formData是正确的格式
-        // this.$store.state.fileApi + "upload"
         this.ajax.post("https://r2rserver.cocorobo.cn/v3/documents", formData, {
           headers: {
-            'Content-Type': 'multipart/form-data' // 修改为multipart/form-data以避免乱码
+            'Content-Type': 'multipart/form-data'
           }
         });
 
-        let docid = uuid
+        let docid = uuid;
         let params = {
           n: name,
           did: docid,
           uid: this.userid,
           fid: this.folderid,
           mofid: this.moFolderid != this.folderid ? this.moFolderid : ""
-        }
+        };
         const res2 = await this.ajax.post(this.$store.state.api + 'addFile', [params]);
 
         console.log(res2);
-        let id2 = res2.data[0][0].id
-        // if(this.moFolderid != this.folderid){
-        //   let params = {
-        //     documentids: docid,
-        //     ids: id2,
-        //     folderid: this.moFolderid,
-        //   }
-        //   await this.ajax.post(this.$store.state.fileApi + 'moveFile', [params]);
-        // }
-        this.$message.success("上传成功");
-        this.getData();
       } catch (err) {
         console.error(err);
         this.$message.error("上传失败");