huangyinfeng
4 天以前 db42d08c39ae6129e2b95cd24c0d57c6769282e5
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
import { ref } from 'vue';
import JSEncrypt from 'jsencrypt'; // 导入 JSEncrypt 库
 
export const useUploadHook = (baseUrl: string) => {
  const computedUploadUrl = ref(baseUrl);
 
  // RSA 加密用的公钥
  const publicKey = `-----BEGIN PUBLIC KEY-----
  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkRupiYcKVGGUtDBDoR1t/1zm3ZtZgnte39iTJW6hlqjdY0UagKjpNiIv7J6XjtgfX7SgsR4AWnivqQHAICIvdPKfGZZzIs62OQ19MqrDTMoB/LvK5teNWhClv23WMUfRbP+EHgprT6hTw8U5apw1IB6i/y57NkLav792wiYBYRU4X45NoTaT+aiTSLFEflbfm94EXnhSS3vFkBmrZGy5BRNI8gmzafroslGx2Hk90CqlNdeKYxgZQ6xtvj+u33yrszWvPT6F9fsJT8aMjtvH050iYKRVct+x6Q7VRJgCI4MgvAexnTKdxW54YzvXCuO5bDiy5la7CgerWkTAq9dzXwIDAQAB
  -----END PUBLIC KEY-----`;
 
  // 固定的域名和ID(将来可从 Vuex 中获取)
  const domain = 'https://img.onbus.cn';
  const dbid = 82; // 这里可以从 Vuex 获取
  const formid = 0; // 这里也可以从 Vuex 获取
  const uuid = ref(undefined); // 这里也可以从 Vuex 获取
 
  // 使用 RSA 加密数据
  const encryptData = (data: Record<string, any>) => {
    const encryptor = new JSEncrypt();
    encryptor.setPublicKey(publicKey);
 
    const encryptedData: Record<string, string> = {};
    for (const key in data) {
      if (data.hasOwnProperty(key)) {
        const encryptedValue = encryptor.encrypt(data[key]);
        if (encryptedValue) {
          encryptedData[key] = encodeURIComponent(encryptedValue); // URL 编码
        }
      }
    }
    return encryptedData;
  };
 
  // 获取上传数据并加密
  const getUploadData = (uuid) => {
    const data = {
      dbid: dbid.toString(),
      username: 'huang',
      usercode: 'z9000137',
    };
 
    const newData = encryptData(data);
    return { ...newData, type: 3, fieldid: '333', uuid: uuid };
  };
 
  // 生成文件 URL
  const generateFileUrl = (response: any) => {
    const unid = response.uuid.split(';')[0] + '@P@' + response.uuid.split(';')[1];
    const fileExt = response.fileType;
 
    return `${domain}/uploads/attachment/${dbid}/${formid}/${unid}.${fileExt}`;
  };
 
  return { computedUploadUrl, getUploadData, generateFileUrl };
};