lrj
2 天以前 c61d4fe27c97d2ecc907756aa571a4ef14a7b9b6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
// Logo上传测试脚本
import { uploadToCOS, getCOSConfig } from '../utils/cos'
 
/**
 * 测试上传Logo文件到腾讯云COS
 */
export const testUploadLogo = async () => {
  console.log('=== 开始Logo上传测试 ===')
  
  try {
    // 1. 检查COS配置
    console.log('步骤1: 获取COS配置信息...')
    const config = await getCOSConfig()
    console.log('COS配置:', {
      bucket: config.bucket,
      region: config.region,
      domain: config.domain
    })
    
    // 2. 获取Logo文件
    console.log('步骤2: 获取Logo文件...')
    const logoFile = await fetchLogoFile()
    
    if (!logoFile) {
      throw new Error('无法获取Logo文件')
    }
    
    console.log('Logo文件信息:', {
      name: logoFile.name,
      size: logoFile.size,
      type: logoFile.type
    })
    
    // 3. 上传到COS
    console.log('步骤3: 上传Logo到COS...')
    const uploadUrl = await uploadToCOS(logoFile, 'avatars/')
    
    console.log('✅ Logo上传成功!')
    console.log('访问URL:', uploadUrl)
    
    // 4. 验证上传结果
    console.log('步骤4: 验证上传结果...')
    const isAccessible = await verifyFileAccess(uploadUrl)
    
    if (isAccessible) {
      console.log('✅ 文件可正常访问')
    } else {
      console.log('⚠️ 文件访问验证失败,但上传可能成功')
    }
    
    console.log('=== Logo上传测试完成 ===')
    
    return {
      success: true,
      url: uploadUrl,
      config: config
    }
    
  } catch (error: any) {
    console.error('❌ Logo上传测试失败:', error.message)
    console.error('错误详情:', error)
    
    return {
      success: false,
      error: error.message
    }
  }
}
 
/**
 * 获取Logo文件
 */
async function fetchLogoFile(): Promise<File | null> {
  try {
    console.log('尝试从 /UI/logo.jpg 获取文件...')
    const response = await fetch('/UI/logo.jpg')
    
    if (!response.ok) {
      throw new Error(`HTTP ${response.status}: ${response.statusText}`)
    }
    
    const blob = await response.blob()
    const file = new File([blob], 'logo.jpg', { type: 'image/jpeg' })
    
    console.log('成功获取Logo文件:', {
      size: file.size,
      type: file.type
    })
    
    return file
    
  } catch (error) {
    console.error('获取Logo文件失败:', error)
    return null
  }
}
 
/**
 * 验证文件是否可访问
 */
async function verifyFileAccess(url: string): Promise<boolean> {
  try {
    const response = await fetch(url, { method: 'HEAD' })
    return response.ok
  } catch (error) {
    console.error('验证文件访问失败:', error)
    return false
  }
}
 
/**
 * 在浏览器控制台中运行测试
 */
export const runLogoUploadTest = () => {
  console.log('开始执行Logo上传测试...')
  
  testUploadLogo()
    .then(result => {
      if (result.success) {
        console.log('🎉 测试成功完成!')
        console.log('Logo URL:', result.url)
        
        // 可以将URL保存到localStorage供后续使用
        localStorage.setItem('uploaded_logo_url', result.url!)
        console.log('Logo URL已保存到localStorage')
        
      } else {
        console.log('❌ 测试失败:', result.error)
      }
    })
    .catch(error => {
      console.error('❌ 测试执行异常:', error)
    })
}
 
// 导出到全局对象,方便在浏览器控制台中调用
if (typeof window !== 'undefined') {
  (window as any).runLogoUploadTest = runLogoUploadTest
  (window as any).testUploadLogo = testUploadLogo
}