From 3714621173c606c4c58439ed8941100ce9ddea14 Mon Sep 17 00:00:00 2001
From: Codex Assistant <codex@example.com>
Date: 星期三, 05 十一月 2025 15:10:49 +0800
Subject: [PATCH] bug

---
 web/src/utils/cos-simple.ts |  192 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 128 insertions(+), 64 deletions(-)

diff --git a/web/src/utils/cos-simple.ts b/web/src/utils/cos-simple.ts
index 6f3e835..76fc4a5 100644
--- a/web/src/utils/cos-simple.ts
+++ b/web/src/utils/cos-simple.ts
@@ -1,65 +1,129 @@
-import axios from 'axios'

-

-// GraphQL鏌ヨ鑾峰彇涓婁紶鍑瘉

-const GET_UPLOAD_CREDENTIALS = `

-  query GetUploadCredentials {

-    getUploadCredentials {

-      bucket

-      region

-      key

-      presignedUrl

-      expiration

-    }

-  }

-`

-

-// 浠庡悗绔疓raphQL鑾峰彇涓婁紶鍑瘉

-const getUploadCredentials = async () => {

-  try {

-    const response = await axios.post('http://localhost:8080/graphql', {

-      query: GET_UPLOAD_CREDENTIALS

-    })

-    

-    if (response.data.errors) {

-      throw new Error(response.data.errors[0].message)

-    }

-    

-    return response.data.data.getUploadCredentials

-  } catch (error) {

-    console.error('鑾峰彇涓婁紶鍑瘉澶辫触:', error)

-    throw error

-  }

-}

-

-/**

- * 浣跨敤棰勭鍚峌RL涓婁紶鏂囦欢鍒拌吘璁簯COS

- * @param file 瑕佷笂浼犵殑鏂囦欢

- * @returns Promise<string> 杩斿洖鏂囦欢鐨勮闂甎RL

- */

-export const uploadToCOS = async (file: File): Promise<string> => {

-  try {

-    // 鑾峰彇涓婁紶鍑瘉

-    const credentials = await getUploadCredentials()

-    

-    // 浣跨敤棰勭鍚峌RL

-    const uploadUrl = credentials.presignedUrl

-    

-    // 浣跨敤棰勭鍚峌RL涓婁紶鏂囦欢

-    const uploadResponse = await axios.put(uploadUrl, file, {

-      headers: {

-        'Content-Type': file.type,

-      }

-    })

-    

-    if (uploadResponse.status === 200) {

-      // 杩斿洖鏂囦欢鐨勮闂甎RL锛堝幓鎺夋煡璇㈠弬鏁帮級

-      const fileUrl = `https://${credentials.bucket}.cos.${credentials.region}.myqcloud.com/${credentials.key}`

-      return fileUrl

-    } else {

-      throw new Error(`涓婁紶澶辫触锛岀姸鎬佺爜: ${uploadResponse.status}`)

-    }

-    

-  } catch (error) {

-    throw error

-  }

+import axios from 'axios'
+import { serverUrl } from './appConfig.js'
+
+
+
+// GraphQL鏌ヨ鑾峰彇涓婁紶鍑瘉
+
+const GET_UPLOAD_CREDENTIALS = `
+
+  query GetUploadCredentials {
+
+    getUploadCredentials {
+
+      bucket
+
+      region
+
+      key
+
+      presignedUrl
+
+      expiration
+
+    }
+
+  }
+
+`
+
+
+
+// 浠庡悗绔疓raphQL鑾峰彇涓婁紶鍑瘉
+
+const getUploadCredentials = async () => {
+
+  try {
+
+    const response = await axios.post(`${serverUrl}/graphql`, {
+
+      query: GET_UPLOAD_CREDENTIALS
+
+    })
+
+  
+    if (response.data.errors) {
+
+      throw new Error(response.data.errors[0].message)
+
+    }
+
+    
+
+    return response.data.data.getUploadCredentials
+
+  } catch (error) {
+
+    console.error('鑾峰彇涓婁紶鍑瘉澶辫触:', error)
+
+    throw error
+
+  }
+
+}
+
+
+
+/**
+
+ * 浣跨敤棰勭鍚峌RL涓婁紶鏂囦欢鍒拌吘璁簯COS
+
+ * @param file 瑕佷笂浼犵殑鏂囦欢
+
+ * @returns Promise<string> 杩斿洖鏂囦欢鐨勮闂甎RL
+
+ */
+
+export const uploadToCOS = async (file: File): Promise<string> => {
+
+  try {
+
+    // 鑾峰彇涓婁紶鍑瘉
+
+    const credentials = await getUploadCredentials()
+
+    
+
+    // 浣跨敤棰勭鍚峌RL
+
+    const uploadUrl = credentials.presignedUrl
+
+    
+
+    // 浣跨敤棰勭鍚峌RL涓婁紶鏂囦欢
+
+    const uploadResponse = await axios.put(uploadUrl, file, {
+
+      headers: {
+
+        'Content-Type': file.type,
+
+      }
+
+    })
+
+    
+
+    if (uploadResponse.status === 200) {
+
+      // 杩斿洖鏂囦欢鐨勮闂甎RL锛堝幓鎺夋煡璇㈠弬鏁帮級
+
+      const fileUrl = `https://${credentials.bucket}.cos.${credentials.region}.myqcloud.com/${credentials.key}`
+
+      return fileUrl
+
+    } else {
+
+      throw new Error(`涓婁紶澶辫触锛岀姸鎬佺爜: ${uploadResponse.status}`)
+
+    }
+
+    
+
+  } catch (error) {
+
+    throw error
+
+  }
+
 }
\ No newline at end of file

--
Gitblit v1.8.0