Ver Fonte

Update:更新readme

XieXing há 3 meses atrás
pai
commit
70485f2d03
1 ficheiros alterados com 15 adições e 4 exclusões
  1. 15 4
      shudao-vue-frontend/src/views/PolicyDocument.vue

+ 15 - 4
shudao-vue-frontend/src/views/PolicyDocument.vue

@@ -204,6 +204,7 @@ import { ref, onMounted, onUnmounted } from "vue";
 import { useRouter } from "vue-router";
 import { useRouter } from "vue-router";
 import { apis } from "@/request/apis.js";
 import { apis } from "@/request/apis.js";
 import { BACKEND_API_PREFIX } from "@/utils/apiConfig";
 import { BACKEND_API_PREFIX } from "@/utils/apiConfig";
+import { getToken } from "@/utils/auth";
 
 
 const router = useRouter();
 const router = useRouter();
 
 
@@ -395,20 +396,30 @@ const downloadPolicy = async (file) => {
     }
     }
 };
 };
 
 
-// 最简单的下载方式
-const downloadFileViaBackend = (fileUrl, fileName) => {
+// 带鉴权的下载方式
+const downloadFileViaBackend = async (fileUrl, fileName) => {
     const downloadUrl = `${BACKEND_API_PREFIX}/download_file?pdf_oss_download_link=${encodeURIComponent(
     const downloadUrl = `${BACKEND_API_PREFIX}/download_file?pdf_oss_download_link=${encodeURIComponent(
         fileUrl
         fileUrl
     )}&file_name=${encodeURIComponent(fileName)}`;
     )}&file_name=${encodeURIComponent(fileName)}`;
 
 
-    // 创建隐藏的a标签进行下载
+    const token = getToken();
+    const headers = {};
+    if (token) {
+        headers['Authorization'] = `Bearer ${token}`;
+    }
+
+    const response = await fetch(downloadUrl, { headers });
+    const blob = await response.blob();
+    const blobUrl = URL.createObjectURL(blob);
+    
     const a = document.createElement("a");
     const a = document.createElement("a");
-    a.href = downloadUrl;
+    a.href = blobUrl;
     a.download = fileName || "download_file";
     a.download = fileName || "download_file";
     a.style.display = "none";
     a.style.display = "none";
     document.body.appendChild(a);
     document.body.appendChild(a);
     a.click();
     a.click();
     document.body.removeChild(a);
     document.body.removeChild(a);
+    URL.revokeObjectURL(blobUrl);
 };
 };
 // 导入文件类型图标
 // 导入文件类型图标
 import pdfIcon from "@/assets/Policy/2.png";
 import pdfIcon from "@/assets/Policy/2.png";