@smart100/spu-web-plugin 0.0.36 → 0.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -0
- package/dist/spu-web-plugin.mjs +321 -97
- package/package.json +2 -1
- package/src/axios.ts +8 -0
- package/src/cloudServ.ts +13 -28
- package/src/index.ts +9 -6
- package/src/login.ts +1 -1
- package/src/oss/downloadService.ts +91 -17
- package/src/oss/multiUpload.ts +9 -9
- package/src/oss/uploadService.ts +68 -18
- package/src/types/global.d.ts +7 -0
- package/src/types/index.d.ts +2 -0
- package/src/urlquery.ts +3 -1
- package/src/utils.ts +12 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smart100/spu-web-plugin",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.38",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "npm run build:types && rollup -c -w",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@amap/amap-jsapi-loader": "^1.0.1",
|
|
41
41
|
"@smart100/wxworksuite-plugin": "^0.0.12",
|
|
42
|
+
"aws-sdk": "^2.1692.0",
|
|
42
43
|
"axios": "^1.6.0",
|
|
43
44
|
"co": "^4.6.0",
|
|
44
45
|
"dayjs": "^1.11.10",
|
package/src/axios.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { get } from 'lodash-es'
|
|
|
9
9
|
import { loadding } from './components/loadding'
|
|
10
10
|
import login from './login'
|
|
11
11
|
import core from './core'
|
|
12
|
+
import urlquery from './urlquery'
|
|
12
13
|
|
|
13
14
|
interface Response {
|
|
14
15
|
code: number | string
|
|
@@ -67,6 +68,13 @@ const createAxiosInstance = (type: 'spu' | 'normal' = 'spu', options: any) => {
|
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
70
|
|
|
71
|
+
// 平台的业务接口开了开发者模式后,header带上debug方便查看接口的ide日志
|
|
72
|
+
if (type !== 'spu' && urlquery.isdebugger && config.url.indexOf('api/teapi/dy-biz/') > -1) {
|
|
73
|
+
if (config?.headers) {
|
|
74
|
+
config.headers.debug = 'true'
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
70
78
|
return config
|
|
71
79
|
}, error => {
|
|
72
80
|
return Promise.reject(error)
|
package/src/cloudServ.ts
CHANGED
|
@@ -30,38 +30,23 @@ class CloudServ {
|
|
|
30
30
|
lsProxy.removeItem(this.CLOUD_SERVE_KEY)
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
public getProvider (sign: StorageType = 'storage'): IAny | null {
|
|
34
34
|
const storage: NormalizedCloudServItem | null = this.get(sign)
|
|
35
35
|
if (!storage) {
|
|
36
|
-
return
|
|
36
|
+
return null
|
|
37
|
+
}
|
|
38
|
+
const name = storage.cloudserv_storage_provider
|
|
39
|
+
return {
|
|
40
|
+
name: name,
|
|
41
|
+
isAliyun: name === 'aliyun',
|
|
42
|
+
isAzure: name === 'azure',
|
|
43
|
+
isAwss3: name === 'awss3',
|
|
44
|
+
isHuawei: name === 'huawei',
|
|
45
|
+
isMinio: name === 'minio'
|
|
37
46
|
}
|
|
38
|
-
return storage.cloudserv_storage_provider
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
public isAliyun (sign: StorageType = 'storage') {
|
|
43
|
-
return this.getProvider(sign) === 'aliyun'
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public isAzure (sign: StorageType = 'storage') {
|
|
47
|
-
return this.getProvider(sign) === 'azure'
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
public isAwss3 (sign: StorageType = 'storage') {
|
|
51
|
-
return this.getProvider(sign) === 'awss3'
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
public isHuawei (sign: StorageType = 'storage') {
|
|
55
|
-
return this.getProvider(sign) === 'huawei'
|
|
56
47
|
}
|
|
57
48
|
}
|
|
58
49
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
50
|
+
const cloudServ = new CloudServ()
|
|
67
51
|
|
|
52
|
+
export default cloudServ
|
package/src/index.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { initAxios, spuAxios, axios } from './axios'
|
|
|
9
9
|
import { initSpuConfig, spuConfig } from './spuConfig'
|
|
10
10
|
import { globalConfig } from './globalConfig'
|
|
11
11
|
import { downloadService, uploadService } from './oss'
|
|
12
|
-
import { getUniqueid, functionCheck, setTitle, getSpuContainerType, isInApp } from './utils'
|
|
12
|
+
import { getUniqueid, functionCheck, setTitle, getSpuContainerType, isInApp, isdebugger, isvirtuallocation } from './utils'
|
|
13
13
|
import urlquery from './urlquery'
|
|
14
14
|
import AMapLoader from './AMapLoader'
|
|
15
15
|
import login from './login'
|
|
@@ -39,6 +39,8 @@ const globalOptions: any = {
|
|
|
39
39
|
|
|
40
40
|
const install = (app: any, options: any) => {
|
|
41
41
|
|
|
42
|
+
initStorageProxy(globalOptions)
|
|
43
|
+
|
|
42
44
|
urlquery.init()
|
|
43
45
|
|
|
44
46
|
// console.log(app)
|
|
@@ -49,7 +51,7 @@ const install = (app: any, options: any) => {
|
|
|
49
51
|
console.log('@smart100/spu-web-plugin globalOptions: ', globalOptions)
|
|
50
52
|
// setTimeout(() => {
|
|
51
53
|
// console.error('test888')
|
|
52
|
-
// },
|
|
54
|
+
// }, 5000)
|
|
53
55
|
|
|
54
56
|
// if (install.installed) return
|
|
55
57
|
// install.installed = true
|
|
@@ -65,7 +67,6 @@ const install = (app: any, options: any) => {
|
|
|
65
67
|
// console.error('This plugin requires Vue App Instance')
|
|
66
68
|
// }
|
|
67
69
|
|
|
68
|
-
initStorageProxy(globalOptions)
|
|
69
70
|
initAxios(globalOptions)
|
|
70
71
|
initSpuConfig(globalOptions)
|
|
71
72
|
|
|
@@ -141,8 +142,6 @@ const wxworkSuite = {
|
|
|
141
142
|
isWxworkApp
|
|
142
143
|
}
|
|
143
144
|
|
|
144
|
-
|
|
145
|
-
|
|
146
145
|
const Module = {
|
|
147
146
|
getModuleData: core.getModuleData.bind(core),
|
|
148
147
|
getEnvname: login.getEnvname.bind(login),
|
|
@@ -153,6 +152,8 @@ const Module = {
|
|
|
153
152
|
}
|
|
154
153
|
|
|
155
154
|
|
|
155
|
+
|
|
156
|
+
|
|
156
157
|
export {
|
|
157
158
|
SPUWebPlugin as default,
|
|
158
159
|
globalOptions,
|
|
@@ -183,5 +184,7 @@ export {
|
|
|
183
184
|
Module,
|
|
184
185
|
components,
|
|
185
186
|
expandexp,
|
|
186
|
-
wxworkSuite
|
|
187
|
+
wxworkSuite,
|
|
188
|
+
isdebugger,
|
|
189
|
+
isvirtuallocation
|
|
187
190
|
}
|
package/src/login.ts
CHANGED
|
@@ -329,7 +329,7 @@ class Login {
|
|
|
329
329
|
let loginRole: 'center' | 'tenant' = 'tenant' // center | tenant
|
|
330
330
|
if (token) {
|
|
331
331
|
const jwtInfo = this.jwtDecode(token)
|
|
332
|
-
if (jwtInfo?.LoginUser?.centerRole
|
|
332
|
+
if (jwtInfo?.LoginUser?.centerRole) {
|
|
333
333
|
// 产品运营中心登录
|
|
334
334
|
loginRole = 'center'
|
|
335
335
|
}
|
|
@@ -5,8 +5,10 @@ import ObsClient from '../package/huaweicloud-obs/esdk-obs-browserjs.3.22.3.min.
|
|
|
5
5
|
// import * as ObsClient from '../package/huaweicloud-obs/esdk-obs-browserjs.3.22.3.min.js'
|
|
6
6
|
// const ObsClient = require('../package/huaweicloud-obs/esdk-obs-browserjs.3.22.3.min.js')
|
|
7
7
|
|
|
8
|
+
import 'aws-sdk/dist/aws-sdk.min.js'
|
|
9
|
+
|
|
8
10
|
import dayjs from 'dayjs'
|
|
9
|
-
import
|
|
11
|
+
import cloudServ from '../cloudServ'
|
|
10
12
|
import { initServToken } from './servtoken'
|
|
11
13
|
import { axios, getUser } from '../index'
|
|
12
14
|
// import { get } from 'lodash-es'
|
|
@@ -33,6 +35,13 @@ const getContentType = (suffix: string) => {
|
|
|
33
35
|
return map[suffix.toLowerCase()] || ''
|
|
34
36
|
}
|
|
35
37
|
|
|
38
|
+
// 如果url是ip则返回true,是域名则返回false
|
|
39
|
+
const isIpUrl = (url: string) => {
|
|
40
|
+
// 匹配ip的正则表达式
|
|
41
|
+
const reg = /((\w+):\/\/)?(\d+)\.(\d+)\.(\d+)\.(\d+)/
|
|
42
|
+
return reg.test(url)
|
|
43
|
+
}
|
|
44
|
+
|
|
36
45
|
// interface UrlInfo {
|
|
37
46
|
// [propName: string]: {
|
|
38
47
|
// url: string
|
|
@@ -71,6 +80,28 @@ interface IDownload {
|
|
|
71
80
|
}
|
|
72
81
|
|
|
73
82
|
|
|
83
|
+
const getNormalizeAliOssCopeMinio = (cope?: Cope) => {
|
|
84
|
+
let copeObj = ''
|
|
85
|
+
if (cope) {
|
|
86
|
+
if (cope === true) {
|
|
87
|
+
copeObj = 'image/resize,m_fixed,w_100,h_100'
|
|
88
|
+
} else if (typeof cope === 'string') {
|
|
89
|
+
// 'image/resize,m_fixed,w_100,h_100'
|
|
90
|
+
copeObj = cope
|
|
91
|
+
} else if (cope.width || cope.height) {
|
|
92
|
+
copeObj = 'image/resize,m_fixed'
|
|
93
|
+
if (cope.width && !cope.height) {
|
|
94
|
+
copeObj += `,w_${cope.width},h_${cope.width}`
|
|
95
|
+
} else if (cope.height && !cope.width) {
|
|
96
|
+
copeObj += `,w_${cope.height},h_${cope.height}`
|
|
97
|
+
} else if (cope.width && cope.height) {
|
|
98
|
+
copeObj += `,w_${cope.width},h_${cope.height}`
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return copeObj
|
|
103
|
+
}
|
|
104
|
+
|
|
74
105
|
const getNormalizeAliOssCope = (cope?: Cope) => {
|
|
75
106
|
let copeObj = ''
|
|
76
107
|
if (cope) {
|
|
@@ -92,6 +123,7 @@ const getNormalizeAliOssCope = (cope?: Cope) => {
|
|
|
92
123
|
return copeObj
|
|
93
124
|
}
|
|
94
125
|
|
|
126
|
+
|
|
95
127
|
// 根据文件信息最后生成一个云文件服务可以用的链接http://xxxxx.xxx.jpg
|
|
96
128
|
const getUrl = async ({
|
|
97
129
|
type = 'img',
|
|
@@ -101,14 +133,13 @@ const getUrl = async ({
|
|
|
101
133
|
storagetype = 'storage',
|
|
102
134
|
cope = ''
|
|
103
135
|
}: IDownload) => {
|
|
104
|
-
const
|
|
105
|
-
if (!
|
|
136
|
+
const storageConfig = cloudServ.get(storagetype)
|
|
137
|
+
if (!storageConfig) throw Error('无可用存储设置')
|
|
106
138
|
const servToken = await initServToken()
|
|
107
139
|
if (!servToken) throw Error('无可用servToken')
|
|
108
140
|
|
|
109
|
-
const isAliYun = CloudServ.isAliyun(storagetype)
|
|
110
|
-
const isHuawei = CloudServ.isHuawei(storagetype)
|
|
111
141
|
const tenantCode = getUser('tenantcode')
|
|
142
|
+
const provider = cloudServ.getProvider(storagetype)
|
|
112
143
|
|
|
113
144
|
if (!filename) {
|
|
114
145
|
filename = source
|
|
@@ -117,17 +148,17 @@ const getUrl = async ({
|
|
|
117
148
|
const suffix = filename.slice(filename.lastIndexOf('.'))
|
|
118
149
|
const date = dayjs(+datetime).format('YYYYMMDD')
|
|
119
150
|
let objectKey = isAbsoluteUrl ? source : `${source.slice(0, 3)}/${type}/${date}/${tenantCode}/${source}`
|
|
120
|
-
const copeObj = getNormalizeAliOssCope(cope)
|
|
151
|
+
const copeObj = provider?.isMinio ? getNormalizeAliOssCopeMinio(cope) : getNormalizeAliOssCope(cope)
|
|
121
152
|
const contentType = getContentType(suffix)
|
|
122
153
|
|
|
123
|
-
if (
|
|
154
|
+
if (provider?.isAliyun) {
|
|
124
155
|
const ossClient = new OSS({
|
|
125
|
-
// region:
|
|
126
|
-
endpoint:
|
|
156
|
+
// region: storageConfig.cloudserv_storage_storageendpoint,
|
|
157
|
+
endpoint: storageConfig.cloudserv_storage_storageendpoint,
|
|
127
158
|
accessKeyId: servToken.accesskeyid,
|
|
128
159
|
accessKeySecret: servToken.accesskeysecret,
|
|
129
160
|
stsToken: servToken.securitytoken,
|
|
130
|
-
bucket:
|
|
161
|
+
bucket: storageConfig.cloudserv_storage_storagebucket,
|
|
131
162
|
secure: true
|
|
132
163
|
})
|
|
133
164
|
|
|
@@ -152,11 +183,11 @@ const getUrl = async ({
|
|
|
152
183
|
// }
|
|
153
184
|
|
|
154
185
|
return ossUrl
|
|
155
|
-
} else if (isHuawei) {
|
|
186
|
+
} else if (provider?.isHuawei) {
|
|
156
187
|
const obs = new ObsClient({
|
|
157
188
|
access_key_id: servToken.accesskeyid,
|
|
158
189
|
secret_access_key: servToken.accesskeysecret,
|
|
159
|
-
server:
|
|
190
|
+
server: storageConfig.cloudserv_storage_storageendpoint,
|
|
160
191
|
security_token: servToken.securitytoken
|
|
161
192
|
})
|
|
162
193
|
// 修复地址里面有//就不能下载了
|
|
@@ -166,7 +197,7 @@ const getUrl = async ({
|
|
|
166
197
|
try {
|
|
167
198
|
const Params: IAny = {
|
|
168
199
|
// Method: 'get',
|
|
169
|
-
Bucket:
|
|
200
|
+
Bucket: storageConfig.cloudserv_storage_storagebucket,
|
|
170
201
|
Key: objectKey
|
|
171
202
|
// Headers: responseHeader
|
|
172
203
|
// Expires: 3600,
|
|
@@ -188,8 +219,52 @@ const getUrl = async ({
|
|
|
188
219
|
console.error(e)
|
|
189
220
|
throw Error(e)
|
|
190
221
|
}
|
|
222
|
+
} else if (provider?.isMinio) {
|
|
223
|
+
const S3 = window?.AWS?.S3
|
|
224
|
+
const s3Params: IAny = {
|
|
225
|
+
accessKeyId: servToken.accesskeyid,
|
|
226
|
+
secretAccessKey: servToken.accesskeysecret,
|
|
227
|
+
sessionToken: servToken.securitytoken,
|
|
228
|
+
signatureVersion: 'v4',
|
|
229
|
+
endpoint: storageConfig.cloudserv_storage_storageendpoint,
|
|
230
|
+
region: storageConfig.cloudserv_storage_region
|
|
231
|
+
}
|
|
232
|
+
// minio和url为ip的需要将存储桶后置
|
|
233
|
+
if (provider?.isMinio || isIpUrl(storageConfig.cloudserv_storage_storageurl)) {
|
|
234
|
+
s3Params.s3ForcePathStyle = true
|
|
235
|
+
}
|
|
236
|
+
const s3 = new S3(s3Params)
|
|
237
|
+
|
|
238
|
+
// awss3缩略图没方案处理
|
|
239
|
+
const params = {
|
|
240
|
+
Expires: 60 * 60 * 24 * 7,
|
|
241
|
+
Bucket: storageConfig.cloudserv_storage_storagebucket,
|
|
242
|
+
Key: objectKey[0] === '/' ? objectKey.slice(1) : objectKey
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
const getSignedUrlPro = () => {
|
|
246
|
+
return new Promise((resolve, reject) => {
|
|
247
|
+
s3.getSignedUrl('getObject', params, (err: any, data: any) => {
|
|
248
|
+
if (err) {
|
|
249
|
+
console.error(err)
|
|
250
|
+
reject(new Error(err))
|
|
251
|
+
} else {
|
|
252
|
+
if (provider?.isMinio && copeObj) {
|
|
253
|
+
data = `${data}&x-oss-process=${copeObj}`
|
|
254
|
+
// data = `${data}&x-oss-process=image/resize,m_fixed,w_100,h_`
|
|
255
|
+
}
|
|
256
|
+
resolve(data)
|
|
257
|
+
console.log(data)
|
|
258
|
+
}
|
|
259
|
+
})
|
|
260
|
+
})
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
const signedUrl = await getSignedUrlPro()
|
|
264
|
+
// console.log(signedUrl)
|
|
265
|
+
return signedUrl
|
|
191
266
|
} else {
|
|
192
|
-
throw Error(
|
|
267
|
+
throw Error(`暂不支持${provider?.name}存储类型`)
|
|
193
268
|
}
|
|
194
269
|
}
|
|
195
270
|
|
|
@@ -258,9 +333,8 @@ const downloadFile = async ({
|
|
|
258
333
|
// throw Error(e)
|
|
259
334
|
// })
|
|
260
335
|
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
if (isAliYun) {
|
|
336
|
+
const provider = cloudServ.getProvider(storagetype)
|
|
337
|
+
if (provider?.isAliyun) {
|
|
264
338
|
downloadFileByUrl(url, filename)
|
|
265
339
|
} else {
|
|
266
340
|
axios.get(url, {
|
package/src/oss/multiUpload.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
interface IMultiUploadOptions {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
bucket: string
|
|
3
|
+
key: string
|
|
4
|
+
partSize?: number
|
|
5
|
+
parallel: number
|
|
6
|
+
onProgress?: (number: number) => void
|
|
7
7
|
}
|
|
8
8
|
interface IUploadPartRes {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
PartNumber: number
|
|
10
|
+
ETag: string
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
interface ITask<T> {
|
|
14
|
-
|
|
14
|
+
(): Promise<T>
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export const obsMultiUpload = async (obs: any, file: File | Blob, options: IMultiUploadOptions) => {
|
|
@@ -90,7 +90,7 @@ export const obsMultiUpload = async (obs: any, file: File | Blob, options: IMult
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
const executeTasks = async <T>(tasks: Array<ITask<T>>, parallel = 3): Promise<Array<T>> => {
|
|
93
|
+
const executeTasks = async <T> (tasks: Array<ITask<T>>, parallel = 3): Promise<Array<T>> => {
|
|
94
94
|
return new Promise((resolve, reject) => {
|
|
95
95
|
const todos = tasks.slice(0, parallel)
|
|
96
96
|
const pendings = tasks.slice(parallel)
|
package/src/oss/uploadService.ts
CHANGED
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import OSS from '../package/ali-oss/aliyun-oss-sdk.apaas.min.js'
|
|
2
2
|
// const OSS = require('../package/ali-oss/aliyun-oss-sdk.apaas.min.js')
|
|
3
|
+
|
|
3
4
|
import ObsClient from '../package/huaweicloud-obs/esdk-obs-browserjs.3.22.3.min.js'
|
|
4
5
|
// const ObsClient = require('../package/huaweicloud-obs/esdk-obs-browserjs.3.22.3.min.js')
|
|
5
6
|
|
|
7
|
+
// import '../package/aws-sdk/aws-sdk.min.js'
|
|
8
|
+
import 'aws-sdk/dist/aws-sdk.min.js'
|
|
9
|
+
// var S3 = require('aws-sdk/clients/s3')
|
|
10
|
+
// import S3 from 'aws-sdk/clients/s3'
|
|
11
|
+
// import S3 from 'aws-sdk'
|
|
12
|
+
// import S3 from 'aws-sdk/dist/aws-sdk.js'
|
|
13
|
+
// import * as S3 from 'aws-sdk/dist/aws-sdk.js'
|
|
14
|
+
// import AWS from '../package/aws-sdk/aws-sdk.min.js'
|
|
15
|
+
// import * as AWS from 'aws-sdk'
|
|
16
|
+
|
|
6
17
|
import { v4 as uuidv4 } from 'uuid'
|
|
7
18
|
import dayjs from 'dayjs'
|
|
8
19
|
import co from 'co'
|
|
9
20
|
|
|
10
21
|
import { getUser } from '../index'
|
|
11
|
-
import
|
|
22
|
+
import cloudServ from '../cloudServ'
|
|
12
23
|
import { initServToken } from './servtoken'
|
|
13
24
|
import { obsMultiUpload } from './multiUpload'
|
|
14
25
|
|
|
@@ -31,13 +42,12 @@ const upload = async ({
|
|
|
31
42
|
onprogress,
|
|
32
43
|
}: IUpload) => {
|
|
33
44
|
if (!file) throw Error('请传入文件')
|
|
34
|
-
const
|
|
35
|
-
if (!
|
|
45
|
+
const storageConfig = cloudServ.get(storagetype)
|
|
46
|
+
if (!storageConfig) throw Error('无可用存储设置')
|
|
36
47
|
const servToken = await initServToken()
|
|
37
48
|
if (!servToken) throw Error('无可用servToken')
|
|
38
49
|
|
|
39
|
-
const
|
|
40
|
-
const isHuawei = CloudServ.isHuawei(storagetype)
|
|
50
|
+
const provider = cloudServ.getProvider(storagetype)
|
|
41
51
|
const tenantCode = getUser('tenantcode')
|
|
42
52
|
const suffix = '.' + file.name.substring(file.name.lastIndexOf('.') + 1)
|
|
43
53
|
source = source ? source : (uuidv4() + suffix)
|
|
@@ -48,21 +58,20 @@ const upload = async ({
|
|
|
48
58
|
// console.log(file)
|
|
49
59
|
// console.log(source)
|
|
50
60
|
// console.log(datetime)
|
|
61
|
+
// console.log(provider)
|
|
62
|
+
// console.log(storageConfig)
|
|
63
|
+
// debugger
|
|
51
64
|
const promise = new Promise(async (resolve, reject) => {
|
|
52
|
-
if (
|
|
65
|
+
if (provider?.isAliyun) {
|
|
53
66
|
const ossClient = new OSS({
|
|
54
|
-
// region:
|
|
55
|
-
endpoint:
|
|
67
|
+
// region: storageConfig.cloudserv_storage_storageendpoint,
|
|
68
|
+
endpoint: storageConfig.cloudserv_storage_storageendpoint,
|
|
56
69
|
accessKeyId: servToken.accesskeyid,
|
|
57
70
|
accessKeySecret: servToken.accesskeysecret,
|
|
58
71
|
stsToken: servToken.securitytoken,
|
|
59
|
-
bucket:
|
|
72
|
+
bucket: storageConfig.cloudserv_storage_storagebucket,
|
|
60
73
|
secure: true
|
|
61
74
|
})
|
|
62
|
-
// promise.cancel = () => {
|
|
63
|
-
// ossClient.cancel()
|
|
64
|
-
// reject(new Error('Cancel'))
|
|
65
|
-
// }
|
|
66
75
|
co(function* () {
|
|
67
76
|
yield ossClient.multipartUpload(objectKey, file, {
|
|
68
77
|
headers: {
|
|
@@ -87,22 +96,22 @@ const upload = async ({
|
|
|
87
96
|
console.error(error)
|
|
88
97
|
reject(error)
|
|
89
98
|
})
|
|
90
|
-
} else if (isHuawei) {
|
|
99
|
+
} else if (provider?.isHuawei) {
|
|
91
100
|
const obs = new ObsClient({
|
|
92
101
|
access_key_id: servToken.accesskeyid,
|
|
93
102
|
secret_access_key: servToken.accesskeysecret,
|
|
94
|
-
server:
|
|
103
|
+
server: storageConfig.cloudserv_storage_storageendpoint,
|
|
95
104
|
security_token: servToken.securitytoken
|
|
96
105
|
})
|
|
97
106
|
// const obs = new ObsClient({
|
|
98
107
|
// access_key_id: '75ISL4GWAOOO1USWUMRG',
|
|
99
108
|
// secret_access_key: 'srn6eJ1BpFbjxoFrJgiQjeS65Z3eKC3rnqeyBBlL',
|
|
100
|
-
// server:
|
|
109
|
+
// server: storageConfig.cloudserv_storage_storageendpoint,
|
|
101
110
|
// security_token: 'gQ5jbi1zb3V0aHdlc3QtMogAsKjYcI5CQldRAvQQJysdkZ7tAt6arLsoWHFGCaco8s8FPk6wtbslHWhvg2SZh3QMM4aUA4FhPEWQt9A7gXoC_Lh4DpF6hhHIxUyACKgakNHNPdPegy5G9-sibBXkGueIY1X3K12tzpjbyd08esLKEEu-M_QmfDoDdkgOcyidITc-lOg5EzXb27f91Ym26u2mAMTaNjCLRulJ4rziLSW6IAprSx8LUkuQQE-wUz-tMzVL9oFiVykHz980o0Y0CNdCIwn98Y-xbMdslZ3U8raydy6Wnf2LchXc0ajvMix0gg-CV0tpA4cgiZFqPxwEDXSv42hvfccboWlpGmOVR3llHLUirrlgFod8rhm-Rmk6MIfQw4NA8rddow1Gx6g-MugFV5arMDLfsOhqeSFQRJWizb3q50zk6GcUFulewitxP8HSkXMGt_rDDYCcCEmdu15D3imX5431Mbdt0qCgxH80OPCDmFXw0xMOsggxE0PBVexVY2x3wHGeql3JNyevUZAhqlskNNu77ui2Vnp-ZbHMcxgDLcPuAULINId4V_QGdhAkDaxQk53AE237DAFXtlyWWaBRMsTNVnpq9mCXJup9pdBbjLRVAO4OxfYVnwwvl-w_mb-xCgOf5EPHqA_zbZF8z-ad6JjWgLOQCHaawE7kNGHIQwAgzneik33wP2jPlG1ak9KEWyXr1n2QMJCmDM3bIrRit5_8LLFoPjXcwurBjZ-AomM_ztOe34sdr357atlQcPD7a2xWtrvn9mnqqndg12m7QxnwkmJsOYK4ZO5Hoyb2vd_NX2Nd9PaSIVAcFw=='
|
|
102
111
|
// })
|
|
103
112
|
try {
|
|
104
113
|
const uploadRes = await obsMultiUpload(obs, file, {
|
|
105
|
-
bucket:
|
|
114
|
+
bucket: storageConfig.cloudserv_storage_storagebucket,
|
|
106
115
|
key: objectKey,
|
|
107
116
|
parallel: 3,
|
|
108
117
|
onProgress: (percent: number) => {
|
|
@@ -133,8 +142,49 @@ const upload = async ({
|
|
|
133
142
|
// console.log(result)
|
|
134
143
|
// debugger
|
|
135
144
|
// })
|
|
145
|
+
} else if (provider?.isMinio || provider?.isAwss3) {
|
|
146
|
+
// console.error(9874)
|
|
147
|
+
// console.log(S3)
|
|
148
|
+
// console.log(window.AWS)
|
|
149
|
+
const S3 = window?.AWS?.S3
|
|
150
|
+
// debugger
|
|
151
|
+
// debugger
|
|
152
|
+
const s3 = new S3({
|
|
153
|
+
accessKeyId: servToken.accesskeyid,
|
|
154
|
+
secretAccessKey: servToken.accesskeysecret,
|
|
155
|
+
sessionToken: servToken.securitytoken,
|
|
156
|
+
region: storageConfig.cloudserv_storage_region,
|
|
157
|
+
endpoint: storageConfig.cloudserv_storage_storageendpoint,
|
|
158
|
+
signatureVersion: 'v4',
|
|
159
|
+
s3ForcePathStyle: provider?.isMinio ? true : undefined
|
|
160
|
+
})
|
|
161
|
+
const params = {
|
|
162
|
+
Bucket: storageConfig.cloudserv_storage_storagebucket,
|
|
163
|
+
Key: objectKey,
|
|
164
|
+
Body: file
|
|
165
|
+
}
|
|
166
|
+
const upload = s3.upload(params, {}).on('httpUploadProgress', (e: any) => {
|
|
167
|
+
const precent: any = parseInt(e.loaded, 10) / parseInt(e.total, 10)
|
|
168
|
+
// console.log('httpUploadProgress', e)
|
|
169
|
+
onprogress && onprogress(precent.toFixed(2))
|
|
170
|
+
})
|
|
171
|
+
upload.send((err: any, data: any) => {
|
|
172
|
+
if (err) {
|
|
173
|
+
console.error(err)
|
|
174
|
+
reject(err)
|
|
175
|
+
} else {
|
|
176
|
+
resolve({
|
|
177
|
+
source,
|
|
178
|
+
filename: file.name,
|
|
179
|
+
type: file.type,
|
|
180
|
+
date: date,
|
|
181
|
+
datetime: datetime,
|
|
182
|
+
file
|
|
183
|
+
})
|
|
184
|
+
}
|
|
185
|
+
})
|
|
136
186
|
} else {
|
|
137
|
-
throw Error(
|
|
187
|
+
throw Error(`暂不支持${provider?.name}存储类型`)
|
|
138
188
|
}
|
|
139
189
|
})
|
|
140
190
|
|
package/src/types/global.d.ts
CHANGED
package/src/types/index.d.ts
CHANGED
package/src/urlquery.ts
CHANGED
package/src/utils.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getUser } from './index'
|
|
2
|
+
import urlquery from './urlquery'
|
|
2
3
|
|
|
3
4
|
const isIOS = () => {
|
|
4
5
|
const ua = navigator.userAgent
|
|
@@ -61,11 +62,21 @@ const isInApp = (): boolean => {
|
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
|
|
65
|
+
const isdebugger = (): boolean => {
|
|
66
|
+
return urlquery.isdebugger
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const isvirtuallocation = (): boolean => {
|
|
70
|
+
return urlquery.isvirtuallocation
|
|
71
|
+
}
|
|
72
|
+
|
|
64
73
|
export {
|
|
65
74
|
isIOS,
|
|
66
75
|
getUniqueid,
|
|
67
76
|
functionCheck,
|
|
68
77
|
setTitle,
|
|
69
78
|
getSpuContainerType,
|
|
70
|
-
isInApp
|
|
79
|
+
isInApp,
|
|
80
|
+
isdebugger,
|
|
81
|
+
isvirtuallocation
|
|
71
82
|
}
|