@netang/quasar 0.2.7 → 0.2.9
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/components/img/index.vue +0 -2
- package/components/input-number/index.vue +8 -12
- package/components/uploader/index.vue +5 -0
- package/components/uploader-query/index.vue +18 -1
- package/package.json +1 -1
- package/utils/config.js +15 -7
- package/utils/getFile.js +9 -4
- package/utils/getImage.js +11 -2
- package/utils/index.js +2 -0
- package/utils/play.js +40 -0
- package/utils/uploader.js +578 -108
- package/utils/useFileUrl.js +4 -4
- package/utils/useUploader.js +0 -303
package/utils/useFileUrl.js
CHANGED
|
@@ -8,19 +8,19 @@ import { configs } from './config'
|
|
|
8
8
|
/**
|
|
9
9
|
* 获取文件 url
|
|
10
10
|
*/
|
|
11
|
-
export default function useFileUrl(
|
|
11
|
+
export default function useFileUrl(e) {
|
|
12
12
|
|
|
13
13
|
// 获取文件地址
|
|
14
14
|
const {
|
|
15
15
|
getFileUrl,
|
|
16
|
-
} = configs
|
|
16
|
+
} = configs.uploader
|
|
17
17
|
|
|
18
18
|
if ($n_isFunction(getFileUrl)) {
|
|
19
|
-
const res = getFileUrl(
|
|
19
|
+
const res = getFileUrl(e)
|
|
20
20
|
if ($n_isValidString(res)) {
|
|
21
21
|
return res
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
return $n_slash(domain, 'end', true) + src
|
|
25
|
+
return $n_slash(e.domain, 'end', true) + e.src
|
|
26
26
|
}
|
package/utils/useUploader.js
DELETED
|
@@ -1,303 +0,0 @@
|
|
|
1
|
-
import $n_storage from '@netang/utils/storage'
|
|
2
|
-
import $n_isValidObject from '@netang/utils/isValidObject'
|
|
3
|
-
import $n_isValidString from '@netang/utils/isValidString'
|
|
4
|
-
import $n_http from '@netang/utils/http'
|
|
5
|
-
import $n_numberDeep from '@netang/utils/numberDeep'
|
|
6
|
-
import $n_json from '@netang/utils/json'
|
|
7
|
-
|
|
8
|
-
import { getUpload } from './uploader'
|
|
9
|
-
|
|
10
|
-
import $n_toast from './toast'
|
|
11
|
-
import $n_config from './config'
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* 文件类型映射
|
|
15
|
-
*/
|
|
16
|
-
export const FilE_TYPE = {
|
|
17
|
-
file: 1,
|
|
18
|
-
image: 2,
|
|
19
|
-
video: 3,
|
|
20
|
-
audio: 4,
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* 文件名称映射
|
|
25
|
-
*/
|
|
26
|
-
export const FilE_NAME = {
|
|
27
|
-
1: '文件',
|
|
28
|
-
2: '图片',
|
|
29
|
-
3: '视频',
|
|
30
|
-
4: '音频',
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* 上传状态
|
|
35
|
-
*/
|
|
36
|
-
export const UPLOAD_STATUS = {
|
|
37
|
-
// 等待上传中
|
|
38
|
-
waiting: 1,
|
|
39
|
-
// 检查 hash 中
|
|
40
|
-
hashChecking: 2,
|
|
41
|
-
// 检查 hash 完成
|
|
42
|
-
hashChecked: 3,
|
|
43
|
-
// 检查是否存在服务器中
|
|
44
|
-
existChecking: 4,
|
|
45
|
-
// 检查是否存在服务器完成
|
|
46
|
-
existChecked: 5,
|
|
47
|
-
// 上传中
|
|
48
|
-
uploading: 6,
|
|
49
|
-
// 上传完成
|
|
50
|
-
success: 7,
|
|
51
|
-
// 上传失败
|
|
52
|
-
fail: 8,
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* 获取上传参数
|
|
57
|
-
*/
|
|
58
|
-
export async function getUploadParams(type, bucket = 'public') {
|
|
59
|
-
|
|
60
|
-
// 缓存名
|
|
61
|
-
const cacheName = `upload_params_${type}_${bucket}`
|
|
62
|
-
|
|
63
|
-
// 获取缓存
|
|
64
|
-
const cache = $n_storage.get(cacheName)
|
|
65
|
-
if (cache !== null) {
|
|
66
|
-
return cache
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// 请求数据
|
|
70
|
-
const { status, data } = await $n_http({
|
|
71
|
-
url: $n_config('apiFileUrl') + 'get_upload_params',
|
|
72
|
-
data: {
|
|
73
|
-
// 类型
|
|
74
|
-
type,
|
|
75
|
-
// 空间名称
|
|
76
|
-
bucket,
|
|
77
|
-
},
|
|
78
|
-
})
|
|
79
|
-
|
|
80
|
-
// 如果成功
|
|
81
|
-
if (! status || ! $n_isValidObject(data)) {
|
|
82
|
-
return false
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// 【生产模式】
|
|
86
|
-
// --------------------------------------------------
|
|
87
|
-
// #ifdef IS_PRO
|
|
88
|
-
// 保存缓存(6 小时)
|
|
89
|
-
$n_storage.set(cacheName, data, 21600000)
|
|
90
|
-
// #endif
|
|
91
|
-
// --------------------------------------------------
|
|
92
|
-
|
|
93
|
-
return data
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* 删除上传参数缓存
|
|
98
|
-
*/
|
|
99
|
-
export function deleteUploadParams(type, bucket = 'public') {
|
|
100
|
-
$n_storage.delete(`upload_params_${type}_${bucket}`)
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* 上传至服务器
|
|
105
|
-
*/
|
|
106
|
-
export async function uploadServer(params) {
|
|
107
|
-
|
|
108
|
-
const {
|
|
109
|
-
fileType,
|
|
110
|
-
configUpload,
|
|
111
|
-
waitUploadFileLists,
|
|
112
|
-
// uploadFileLists,
|
|
113
|
-
// checkFileError,
|
|
114
|
-
setFileSuccess,
|
|
115
|
-
setFileFail,
|
|
116
|
-
} = params
|
|
117
|
-
|
|
118
|
-
// 获取上传参数
|
|
119
|
-
const uploadParams = await getUploadParams(configUpload.type)
|
|
120
|
-
if (uploadParams === false) {
|
|
121
|
-
for (const fileItem of waitUploadFileLists) {
|
|
122
|
-
setFileFail(fileItem, '上传失败')
|
|
123
|
-
}
|
|
124
|
-
$n_toast({
|
|
125
|
-
message: `获取[${configUpload.type}]上传参数失败`,
|
|
126
|
-
})
|
|
127
|
-
return
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// 是否上传 minio 备份
|
|
131
|
-
// --------------------------------------------------
|
|
132
|
-
let backupParams = null
|
|
133
|
-
let backupConfig = null
|
|
134
|
-
if (configUpload.type !== 'minio') {
|
|
135
|
-
backupConfig = getUpload(null, 'minio')
|
|
136
|
-
// 如果同步
|
|
137
|
-
if (backupConfig.sync === true) {
|
|
138
|
-
backupParams = await getUploadParams(backupConfig.type)
|
|
139
|
-
if (backupParams === false) {
|
|
140
|
-
for (const fileItem of waitUploadFileLists) {
|
|
141
|
-
setFileFail(fileItem, '上传失败')
|
|
142
|
-
}
|
|
143
|
-
$n_toast({
|
|
144
|
-
message: `获取[${backupConfig.type}]上传参数失败`,
|
|
145
|
-
})
|
|
146
|
-
return
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
// --------------------------------------------------
|
|
151
|
-
|
|
152
|
-
// 批量上传
|
|
153
|
-
for (const fileItem of waitUploadFileLists) {
|
|
154
|
-
// 上传单个文件
|
|
155
|
-
await uploadFileItem(fileItem)
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* 上传单个文件
|
|
160
|
-
*/
|
|
161
|
-
async function uploadFileItem(fileItem) {
|
|
162
|
-
|
|
163
|
-
// 设置文件状态
|
|
164
|
-
fileItem.status = UPLOAD_STATUS.uploading
|
|
165
|
-
|
|
166
|
-
// 上传文件
|
|
167
|
-
const upload = async function(configUpload, uploadParams, startPercent, halfPercent) {
|
|
168
|
-
|
|
169
|
-
const {
|
|
170
|
-
// 上传地址
|
|
171
|
-
url,
|
|
172
|
-
// 文件名
|
|
173
|
-
fileName,
|
|
174
|
-
// 键值名
|
|
175
|
-
keyName,
|
|
176
|
-
// 上传数据
|
|
177
|
-
data,
|
|
178
|
-
} = uploadParams
|
|
179
|
-
|
|
180
|
-
// 请求数据
|
|
181
|
-
const httpData = Object.assign({}, data)
|
|
182
|
-
// 文件
|
|
183
|
-
httpData[fileName] = fileItem.file
|
|
184
|
-
// 自定义文件 key
|
|
185
|
-
httpData[keyName] = fileItem.hash
|
|
186
|
-
|
|
187
|
-
const { status, data: res } = await $n_http({
|
|
188
|
-
// 上传地址
|
|
189
|
-
url,
|
|
190
|
-
// 数据
|
|
191
|
-
data: httpData,
|
|
192
|
-
// 关闭错误提醒
|
|
193
|
-
warn: false,
|
|
194
|
-
// 关闭检查结果 code
|
|
195
|
-
checkCode: false,
|
|
196
|
-
// 不包含头部鉴权认证
|
|
197
|
-
token: false,
|
|
198
|
-
// 开启上传
|
|
199
|
-
upload: true,
|
|
200
|
-
// 取消请求
|
|
201
|
-
onCancel(cancel) {
|
|
202
|
-
// 设置中断上传
|
|
203
|
-
fileItem.abort = function(msg) {
|
|
204
|
-
cancel($n_isValidString(msg) ? msg : '已取消')
|
|
205
|
-
}
|
|
206
|
-
},
|
|
207
|
-
// 监听上传进度
|
|
208
|
-
onUploadProgress(percent) {
|
|
209
|
-
// 设置上传进度
|
|
210
|
-
fileItem.progress = Math.round(startPercent + (halfPercent ? percent / 2 : percent))
|
|
211
|
-
},
|
|
212
|
-
})
|
|
213
|
-
|
|
214
|
-
// 如果请求失败
|
|
215
|
-
if (! status) {
|
|
216
|
-
// 设置文件上传失败
|
|
217
|
-
setFileFail(fileItem, res.msg)
|
|
218
|
-
// 删除上传参数缓存
|
|
219
|
-
deleteUploadParams(configUpload.type)
|
|
220
|
-
return false
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
return res
|
|
224
|
-
}
|
|
225
|
-
const resUpload = await upload(configUpload, uploadParams, 0, !! backupParams)
|
|
226
|
-
if (resUpload === false) {
|
|
227
|
-
return false
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
// 是否已备份
|
|
231
|
-
let is_backup = 0
|
|
232
|
-
|
|
233
|
-
// 上传至备份服务器
|
|
234
|
-
// --------------------------------------------------
|
|
235
|
-
if (backupParams) {
|
|
236
|
-
const res = await upload(backupConfig, backupParams, 50, true)
|
|
237
|
-
if (res === false) {
|
|
238
|
-
return false
|
|
239
|
-
}
|
|
240
|
-
is_backup = 1
|
|
241
|
-
}
|
|
242
|
-
// --------------------------------------------------
|
|
243
|
-
|
|
244
|
-
const {
|
|
245
|
-
title,
|
|
246
|
-
type,
|
|
247
|
-
hash,
|
|
248
|
-
ext,
|
|
249
|
-
size,
|
|
250
|
-
json,
|
|
251
|
-
} = fileItem
|
|
252
|
-
|
|
253
|
-
// 请求 - 上传文件至 cdn
|
|
254
|
-
const { status: statusCallback, data: resCallback } = await $n_http({
|
|
255
|
-
url: $n_config('apiFileUrl') + 'upload_callback',
|
|
256
|
-
data: {
|
|
257
|
-
// 类型
|
|
258
|
-
type: configUpload.type,
|
|
259
|
-
// 需上传的文件类型
|
|
260
|
-
file_type: fileType,
|
|
261
|
-
// 文件
|
|
262
|
-
file: {
|
|
263
|
-
// 标题
|
|
264
|
-
title: title || '',
|
|
265
|
-
// 类型
|
|
266
|
-
type,
|
|
267
|
-
// hash
|
|
268
|
-
hash,
|
|
269
|
-
// 后缀
|
|
270
|
-
ext,
|
|
271
|
-
// 文件大小
|
|
272
|
-
size,
|
|
273
|
-
// 文件 json
|
|
274
|
-
json,
|
|
275
|
-
// 是否已备份
|
|
276
|
-
is_backup,
|
|
277
|
-
},
|
|
278
|
-
// 结果
|
|
279
|
-
result: $n_isValidObject(resUpload) ? resUpload : {},
|
|
280
|
-
},
|
|
281
|
-
// 关闭错误提示
|
|
282
|
-
warn: false,
|
|
283
|
-
})
|
|
284
|
-
|
|
285
|
-
// 请求失败
|
|
286
|
-
if (! statusCallback || ! $n_isValidObject(resCallback)) {
|
|
287
|
-
// 设置文件上传失败
|
|
288
|
-
setFileFail(fileItem, resCallback.msg || '上传失败')
|
|
289
|
-
return false
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
// 格式化 json
|
|
293
|
-
const _json = $n_json.parse(resCallback.json)
|
|
294
|
-
Object.assign(fileItem, resCallback, {
|
|
295
|
-
json: $n_isValidObject(_json) ? $n_numberDeep(_json) : {},
|
|
296
|
-
})
|
|
297
|
-
|
|
298
|
-
// 设置文件上传成功
|
|
299
|
-
setFileSuccess(fileItem)
|
|
300
|
-
|
|
301
|
-
return true
|
|
302
|
-
}
|
|
303
|
-
}
|