w-converhp 2.0.53 → 2.0.55
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/README.md +1 -1
- package/dist/w-converhp-client.umd.js +2 -2
- package/dist/w-converhp-client.umd.js.map +1 -1
- package/docs/WConverhpClient.html +2 -2
- package/docs/WConverhpClient.mjs.html +73 -50
- package/docs/WConverhpServer.html +1 -1
- package/docs/WConverhpServer.mjs.html +1 -1
- package/docs/index.html +1 -1
- package/package.json +2 -2
- package/src/WConverhpClient.mjs +72 -49
- package/web.html +18 -3
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
|
|
81
81
|
<dt class="tag-source">Source:</dt>
|
|
82
82
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
83
|
-
<a href="WConverhpClient.mjs.html">WConverhpClient.mjs</a>, <a href="WConverhpClient.mjs.html#
|
|
83
|
+
<a href="WConverhpClient.mjs.html">WConverhpClient.mjs</a>, <a href="WConverhpClient.mjs.html#line100">line 100</a>
|
|
84
84
|
</li></ul></dd>
|
|
85
85
|
|
|
86
86
|
|
|
@@ -649,7 +649,7 @@
|
|
|
649
649
|
<br class="clear">
|
|
650
650
|
|
|
651
651
|
<footer>
|
|
652
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on
|
|
652
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Fri Jun 06 2025 10:10:29 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
653
653
|
</footer>
|
|
654
654
|
|
|
655
655
|
<script>prettyPrint();</script>
|
|
@@ -58,6 +58,7 @@ import isp0int from 'wsemi/src/isp0int.mjs'
|
|
|
58
58
|
import isestr from 'wsemi/src/isestr.mjs'
|
|
59
59
|
import isobj from 'wsemi/src/isobj.mjs'
|
|
60
60
|
import iseobj from 'wsemi/src/iseobj.mjs'
|
|
61
|
+
import isbol from 'wsemi/src/isbol.mjs'
|
|
61
62
|
import ispm from 'wsemi/src/ispm.mjs'
|
|
62
63
|
import cint from 'wsemi/src/cint.mjs'
|
|
63
64
|
import dig from 'wsemi/src/dig.mjs'
|
|
@@ -379,12 +380,22 @@ function WConverhpClient(opt) {
|
|
|
379
380
|
// console.log('dd', dd)
|
|
380
381
|
|
|
381
382
|
//rt
|
|
382
|
-
let rt =
|
|
383
|
+
let rt = null
|
|
383
384
|
if (env === 'nodejs') {
|
|
384
|
-
rt = 'arraybuffer' //nodejs下沒有blob, 只能設定'json', 'arraybuffer', 'document', 'json', 'text', 'stream'
|
|
385
385
|
if (type === 'download') {
|
|
386
386
|
rt = 'stream' //nodejs download模式採用stream接收
|
|
387
387
|
}
|
|
388
|
+
else {
|
|
389
|
+
rt = 'arraybuffer' //nodejs下沒有blob, 只能設定'json', 'arraybuffer', 'document', 'json', 'text', 'stream'
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
if (type === 'download') {
|
|
394
|
+
rt = 'blob' //瀏覽器使用blob下載
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
rt = 'blob' //瀏覽器使用blob取得資料
|
|
398
|
+
}
|
|
388
399
|
}
|
|
389
400
|
// console.log('rt', rt)
|
|
390
401
|
|
|
@@ -438,25 +449,15 @@ function WConverhpClient(opt) {
|
|
|
438
449
|
|
|
439
450
|
//streamRecv
|
|
440
451
|
let streamRecv = get(res, 'data')
|
|
452
|
+
// console.log(env, 'streamRecv', streamRecv)
|
|
441
453
|
|
|
442
454
|
if (env === 'browser') {
|
|
443
455
|
|
|
444
|
-
//browser通過
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
a.download = filename // 動態設置檔名
|
|
450
|
-
document.body.appendChild(a)
|
|
451
|
-
a.click()
|
|
452
|
-
a.remove()
|
|
453
|
-
URL.revokeObjectURL(url)
|
|
454
|
-
pm.resolve(filename)
|
|
455
|
-
}
|
|
456
|
-
catch (err) {
|
|
457
|
-
console.log(err)
|
|
458
|
-
pm.reject(err)
|
|
459
|
-
}
|
|
456
|
+
//browser通過axios使用blob接收時會自動把串流接收並組合成blob, 此時streamRecv已是blob
|
|
457
|
+
pm.resolve({
|
|
458
|
+
filename,
|
|
459
|
+
bb: streamRecv,
|
|
460
|
+
})
|
|
460
461
|
|
|
461
462
|
}
|
|
462
463
|
else {
|
|
@@ -712,7 +713,7 @@ function WConverhpClient(opt) {
|
|
|
712
713
|
}
|
|
713
714
|
|
|
714
715
|
//send
|
|
715
|
-
let res = await send(type, bb, { dataType: 'blob', retry: retryMain, cbProgress })
|
|
716
|
+
let res = await send(type, bb, { dataType: 'blob', retry: retryMain, cbProgress })
|
|
716
717
|
|
|
717
718
|
return res
|
|
718
719
|
}
|
|
@@ -799,7 +800,7 @@ function WConverhpClient(opt) {
|
|
|
799
800
|
|
|
800
801
|
//send check-total-hash
|
|
801
802
|
// console.log(`send check-total-hash...`)
|
|
802
|
-
let resUpCkt = await send('upload-controller', { mode: 'check-total-hash', fileHash: fileTotalHash, filename: fileTotalName, fileSize: fileTotalSize }, { dataType: 'json', retry: retryUpload })
|
|
803
|
+
let resUpCkt = await send('upload-controller', { mode: 'check-total-hash', fileHash: fileTotalHash, filename: fileTotalName, fileSize: fileTotalSize }, { dataType: 'json', retry: retryUpload })
|
|
803
804
|
// console.log('resUpCkt', resUpCkt)
|
|
804
805
|
// resUpCkt {
|
|
805
806
|
// path: 'uploadTemp\\2429b7ef08ce6ba9',
|
|
@@ -868,7 +869,7 @@ function WConverhpClient(opt) {
|
|
|
868
869
|
|
|
869
870
|
//send check-slices-hash
|
|
870
871
|
// console.log(`send check-slices-hash...`)
|
|
871
|
-
let resUpCks = await send('upload-controller', { mode: 'check-slices-hash', fileHash: fileTotalHash, fileSliceHashs }, { dataType: 'json', retry: retryUpload })
|
|
872
|
+
let resUpCks = await send('upload-controller', { mode: 'check-slices-hash', fileHash: fileTotalHash, fileSliceHashs }, { dataType: 'json', retry: retryUpload })
|
|
872
873
|
// console.log('resUpCks', resUpCks)
|
|
873
874
|
// resUpCks {
|
|
874
875
|
// slks: [
|
|
@@ -927,7 +928,7 @@ function WConverhpClient(opt) {
|
|
|
927
928
|
// if (dir === 'upload' && perc === 100) {
|
|
928
929
|
// }
|
|
929
930
|
},
|
|
930
|
-
retry: retryUpload,
|
|
931
|
+
retry: retryUpload,
|
|
931
932
|
})
|
|
932
933
|
// console.log('resSl', resSl)
|
|
933
934
|
|
|
@@ -938,7 +939,7 @@ function WConverhpClient(opt) {
|
|
|
938
939
|
|
|
939
940
|
//send merge-slices-push
|
|
940
941
|
// console.log(`send merge-slices-push...`)
|
|
941
|
-
let resUpMgp = await send('upload-controller', { mode: 'merge-slices-push', fileHash: fileTotalHash, chunkTotal }, { dataType: 'json', retry: retryUpload })
|
|
942
|
+
let resUpMgp = await send('upload-controller', { mode: 'merge-slices-push', fileHash: fileTotalHash, chunkTotal }, { dataType: 'json', retry: retryUpload })
|
|
942
943
|
// console.log('resUpMgp', resUpMgp)
|
|
943
944
|
|
|
944
945
|
//checkMerging
|
|
@@ -953,7 +954,7 @@ function WConverhpClient(opt) {
|
|
|
953
954
|
|
|
954
955
|
//send merge-slices-get
|
|
955
956
|
// console.log(`send merge-slices-get...`)
|
|
956
|
-
send('upload-controller', { mode: 'merge-slices-get', fileHash: fileTotalHash, filename: fileTotalName, queueId }, { dataType: 'json', retry: retryUpload })
|
|
957
|
+
send('upload-controller', { mode: 'merge-slices-get', fileHash: fileTotalHash, filename: fileTotalName, queueId }, { dataType: 'json', retry: retryUpload })
|
|
957
958
|
.then((res) => {
|
|
958
959
|
// console.log('res', res)
|
|
959
960
|
// res => {
|
|
@@ -1087,7 +1088,7 @@ function WConverhpClient(opt) {
|
|
|
1087
1088
|
|
|
1088
1089
|
//send download
|
|
1089
1090
|
let msg = { fileId }
|
|
1090
|
-
let resMg = await send('download', msg, { ...opt, dataType: 'json', retry: retryDownload, cbProgress })
|
|
1091
|
+
let resMg = await send('download', msg, { ...opt, dataType: 'json', retry: retryDownload, cbProgress })
|
|
1091
1092
|
// console.log('resMg', resMg)
|
|
1092
1093
|
|
|
1093
1094
|
return resMg
|
|
@@ -1097,37 +1098,59 @@ function WConverhpClient(opt) {
|
|
|
1097
1098
|
let downloadBrowser = async(fileId, cbProgress, opt = {}) => {
|
|
1098
1099
|
//交由瀏覽器下載與管理故無法監聽進度, 不使用cbProgress
|
|
1099
1100
|
|
|
1100
|
-
//
|
|
1101
|
-
let
|
|
1102
|
-
if (
|
|
1103
|
-
|
|
1101
|
+
//downloadByManager
|
|
1102
|
+
let downloadByManager = get(opt, 'downloadByManager')
|
|
1103
|
+
if (!isbol(downloadByManager)) {
|
|
1104
|
+
downloadByManager = true
|
|
1104
1105
|
}
|
|
1105
|
-
// console.log('
|
|
1106
|
+
// console.log('downloadByManager', downloadByManager)
|
|
1106
1107
|
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1108
|
+
if (downloadByManager) {
|
|
1109
|
+
//由瀏覽器的下載管理器下載, 使用get+stream
|
|
1110
|
+
|
|
1111
|
+
//token
|
|
1112
|
+
let token = getToken()
|
|
1113
|
+
if (ispm(token)) {
|
|
1114
|
+
token = await token
|
|
1115
|
+
}
|
|
1116
|
+
// console.log('token', token)
|
|
1111
1117
|
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1118
|
+
//send download-get-filename
|
|
1119
|
+
let msg = { fileId }
|
|
1120
|
+
let resMg = await send('download-get-filename', msg, { dataType: 'json', retry: retryDownload })
|
|
1121
|
+
// console.log('resMg', resMg)
|
|
1115
1122
|
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1123
|
+
//filename
|
|
1124
|
+
let filename = get(resMg, 'filename', '')
|
|
1125
|
+
// console.log('filename', filename)
|
|
1119
1126
|
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1127
|
+
//urlUse
|
|
1128
|
+
let urlUse = getUrlUse('download-get')
|
|
1129
|
+
// console.log('urlUse', urlUse)
|
|
1123
1130
|
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1131
|
+
//url
|
|
1132
|
+
let url = `${urlUse}?fileId=${fileId}&token=${token}`
|
|
1133
|
+
// console.log('url', url)
|
|
1134
|
+
|
|
1135
|
+
//透過a元素打url下載, 讓瀏覽器認定為直接下載模式, 由瀏覽器展示下載進度與排入正在下載清單
|
|
1136
|
+
let a = document.createElement('a')
|
|
1137
|
+
a.href = url
|
|
1138
|
+
a.download = filename
|
|
1139
|
+
a.click()
|
|
1140
|
+
|
|
1141
|
+
return filename
|
|
1142
|
+
}
|
|
1143
|
+
else {
|
|
1144
|
+
//通過axios下載得到blob, 回傳檔案名稱與blob供後續處理
|
|
1145
|
+
|
|
1146
|
+
//send download
|
|
1147
|
+
let msg = { fileId }
|
|
1148
|
+
let resMg = await send('download', msg, { ...opt, dataType: 'json', retry: retryDownload, cbProgress })
|
|
1149
|
+
// console.log('resMg', resMg)
|
|
1150
|
+
|
|
1151
|
+
return resMg
|
|
1152
|
+
}
|
|
1129
1153
|
|
|
1130
|
-
return filename
|
|
1131
1154
|
}
|
|
1132
1155
|
|
|
1133
1156
|
//download
|
|
@@ -1164,7 +1187,7 @@ export default WConverhpClient
|
|
|
1164
1187
|
<br class="clear">
|
|
1165
1188
|
|
|
1166
1189
|
<footer>
|
|
1167
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on
|
|
1190
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Fri Jun 06 2025 10:10:29 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
1168
1191
|
</footer>
|
|
1169
1192
|
|
|
1170
1193
|
<script>prettyPrint();</script>
|
|
@@ -749,7 +749,7 @@
|
|
|
749
749
|
<br class="clear">
|
|
750
750
|
|
|
751
751
|
<footer>
|
|
752
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on
|
|
752
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Fri Jun 06 2025 10:10:29 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
753
753
|
</footer>
|
|
754
754
|
|
|
755
755
|
<script>prettyPrint();</script>
|
|
@@ -1485,7 +1485,7 @@ export default WConverhpServer
|
|
|
1485
1485
|
<br class="clear">
|
|
1486
1486
|
|
|
1487
1487
|
<footer>
|
|
1488
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on
|
|
1488
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Fri Jun 06 2025 10:10:29 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
1489
1489
|
</footer>
|
|
1490
1490
|
|
|
1491
1491
|
<script>prettyPrint();</script>
|
package/docs/index.html
CHANGED
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
<br class="clear">
|
|
72
72
|
|
|
73
73
|
<footer>
|
|
74
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on
|
|
74
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Fri Jun 06 2025 10:10:29 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
75
75
|
</footer>
|
|
76
76
|
|
|
77
77
|
<script>prettyPrint();</script>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "w-converhp",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.55",
|
|
4
4
|
"main": "dist/w-converhp-server.umd.js",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@hapi/hapi": "^21.4.0",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"wsemi": "^1.7.92"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
|
-
"form-data": "^4.0.
|
|
13
|
+
"form-data": "^4.0.3",
|
|
14
14
|
"w-package-tools": "^1.1.2"
|
|
15
15
|
},
|
|
16
16
|
"scripts": {
|
package/src/WConverhpClient.mjs
CHANGED
|
@@ -11,6 +11,7 @@ import isp0int from 'wsemi/src/isp0int.mjs'
|
|
|
11
11
|
import isestr from 'wsemi/src/isestr.mjs'
|
|
12
12
|
import isobj from 'wsemi/src/isobj.mjs'
|
|
13
13
|
import iseobj from 'wsemi/src/iseobj.mjs'
|
|
14
|
+
import isbol from 'wsemi/src/isbol.mjs'
|
|
14
15
|
import ispm from 'wsemi/src/ispm.mjs'
|
|
15
16
|
import cint from 'wsemi/src/cint.mjs'
|
|
16
17
|
import dig from 'wsemi/src/dig.mjs'
|
|
@@ -332,12 +333,22 @@ function WConverhpClient(opt) {
|
|
|
332
333
|
// console.log('dd', dd)
|
|
333
334
|
|
|
334
335
|
//rt
|
|
335
|
-
let rt =
|
|
336
|
+
let rt = null
|
|
336
337
|
if (env === 'nodejs') {
|
|
337
|
-
rt = 'arraybuffer' //nodejs下沒有blob, 只能設定'json', 'arraybuffer', 'document', 'json', 'text', 'stream'
|
|
338
338
|
if (type === 'download') {
|
|
339
339
|
rt = 'stream' //nodejs download模式採用stream接收
|
|
340
340
|
}
|
|
341
|
+
else {
|
|
342
|
+
rt = 'arraybuffer' //nodejs下沒有blob, 只能設定'json', 'arraybuffer', 'document', 'json', 'text', 'stream'
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
if (type === 'download') {
|
|
347
|
+
rt = 'blob' //瀏覽器使用blob下載
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
rt = 'blob' //瀏覽器使用blob取得資料
|
|
351
|
+
}
|
|
341
352
|
}
|
|
342
353
|
// console.log('rt', rt)
|
|
343
354
|
|
|
@@ -391,25 +402,15 @@ function WConverhpClient(opt) {
|
|
|
391
402
|
|
|
392
403
|
//streamRecv
|
|
393
404
|
let streamRecv = get(res, 'data')
|
|
405
|
+
// console.log(env, 'streamRecv', streamRecv)
|
|
394
406
|
|
|
395
407
|
if (env === 'browser') {
|
|
396
408
|
|
|
397
|
-
//browser通過
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
a.download = filename // 動態設置檔名
|
|
403
|
-
document.body.appendChild(a)
|
|
404
|
-
a.click()
|
|
405
|
-
a.remove()
|
|
406
|
-
URL.revokeObjectURL(url)
|
|
407
|
-
pm.resolve(filename)
|
|
408
|
-
}
|
|
409
|
-
catch (err) {
|
|
410
|
-
console.log(err)
|
|
411
|
-
pm.reject(err)
|
|
412
|
-
}
|
|
409
|
+
//browser通過axios使用blob接收時會自動把串流接收並組合成blob, 此時streamRecv已是blob
|
|
410
|
+
pm.resolve({
|
|
411
|
+
filename,
|
|
412
|
+
bb: streamRecv,
|
|
413
|
+
})
|
|
413
414
|
|
|
414
415
|
}
|
|
415
416
|
else {
|
|
@@ -665,7 +666,7 @@ function WConverhpClient(opt) {
|
|
|
665
666
|
}
|
|
666
667
|
|
|
667
668
|
//send
|
|
668
|
-
let res = await send(type, bb, { dataType: 'blob', retry: retryMain, cbProgress })
|
|
669
|
+
let res = await send(type, bb, { dataType: 'blob', retry: retryMain, cbProgress })
|
|
669
670
|
|
|
670
671
|
return res
|
|
671
672
|
}
|
|
@@ -752,7 +753,7 @@ function WConverhpClient(opt) {
|
|
|
752
753
|
|
|
753
754
|
//send check-total-hash
|
|
754
755
|
// console.log(`send check-total-hash...`)
|
|
755
|
-
let resUpCkt = await send('upload-controller', { mode: 'check-total-hash', fileHash: fileTotalHash, filename: fileTotalName, fileSize: fileTotalSize }, { dataType: 'json', retry: retryUpload })
|
|
756
|
+
let resUpCkt = await send('upload-controller', { mode: 'check-total-hash', fileHash: fileTotalHash, filename: fileTotalName, fileSize: fileTotalSize }, { dataType: 'json', retry: retryUpload })
|
|
756
757
|
// console.log('resUpCkt', resUpCkt)
|
|
757
758
|
// resUpCkt {
|
|
758
759
|
// path: 'uploadTemp\\2429b7ef08ce6ba9',
|
|
@@ -821,7 +822,7 @@ function WConverhpClient(opt) {
|
|
|
821
822
|
|
|
822
823
|
//send check-slices-hash
|
|
823
824
|
// console.log(`send check-slices-hash...`)
|
|
824
|
-
let resUpCks = await send('upload-controller', { mode: 'check-slices-hash', fileHash: fileTotalHash, fileSliceHashs }, { dataType: 'json', retry: retryUpload })
|
|
825
|
+
let resUpCks = await send('upload-controller', { mode: 'check-slices-hash', fileHash: fileTotalHash, fileSliceHashs }, { dataType: 'json', retry: retryUpload })
|
|
825
826
|
// console.log('resUpCks', resUpCks)
|
|
826
827
|
// resUpCks {
|
|
827
828
|
// slks: [
|
|
@@ -880,7 +881,7 @@ function WConverhpClient(opt) {
|
|
|
880
881
|
// if (dir === 'upload' && perc === 100) {
|
|
881
882
|
// }
|
|
882
883
|
},
|
|
883
|
-
retry: retryUpload,
|
|
884
|
+
retry: retryUpload,
|
|
884
885
|
})
|
|
885
886
|
// console.log('resSl', resSl)
|
|
886
887
|
|
|
@@ -891,7 +892,7 @@ function WConverhpClient(opt) {
|
|
|
891
892
|
|
|
892
893
|
//send merge-slices-push
|
|
893
894
|
// console.log(`send merge-slices-push...`)
|
|
894
|
-
let resUpMgp = await send('upload-controller', { mode: 'merge-slices-push', fileHash: fileTotalHash, chunkTotal }, { dataType: 'json', retry: retryUpload })
|
|
895
|
+
let resUpMgp = await send('upload-controller', { mode: 'merge-slices-push', fileHash: fileTotalHash, chunkTotal }, { dataType: 'json', retry: retryUpload })
|
|
895
896
|
// console.log('resUpMgp', resUpMgp)
|
|
896
897
|
|
|
897
898
|
//checkMerging
|
|
@@ -906,7 +907,7 @@ function WConverhpClient(opt) {
|
|
|
906
907
|
|
|
907
908
|
//send merge-slices-get
|
|
908
909
|
// console.log(`send merge-slices-get...`)
|
|
909
|
-
send('upload-controller', { mode: 'merge-slices-get', fileHash: fileTotalHash, filename: fileTotalName, queueId }, { dataType: 'json', retry: retryUpload })
|
|
910
|
+
send('upload-controller', { mode: 'merge-slices-get', fileHash: fileTotalHash, filename: fileTotalName, queueId }, { dataType: 'json', retry: retryUpload })
|
|
910
911
|
.then((res) => {
|
|
911
912
|
// console.log('res', res)
|
|
912
913
|
// res => {
|
|
@@ -1040,7 +1041,7 @@ function WConverhpClient(opt) {
|
|
|
1040
1041
|
|
|
1041
1042
|
//send download
|
|
1042
1043
|
let msg = { fileId }
|
|
1043
|
-
let resMg = await send('download', msg, { ...opt, dataType: 'json', retry: retryDownload, cbProgress })
|
|
1044
|
+
let resMg = await send('download', msg, { ...opt, dataType: 'json', retry: retryDownload, cbProgress })
|
|
1044
1045
|
// console.log('resMg', resMg)
|
|
1045
1046
|
|
|
1046
1047
|
return resMg
|
|
@@ -1050,37 +1051,59 @@ function WConverhpClient(opt) {
|
|
|
1050
1051
|
let downloadBrowser = async(fileId, cbProgress, opt = {}) => {
|
|
1051
1052
|
//交由瀏覽器下載與管理故無法監聽進度, 不使用cbProgress
|
|
1052
1053
|
|
|
1053
|
-
//
|
|
1054
|
-
let
|
|
1055
|
-
if (
|
|
1056
|
-
|
|
1054
|
+
//downloadByManager
|
|
1055
|
+
let downloadByManager = get(opt, 'downloadByManager')
|
|
1056
|
+
if (!isbol(downloadByManager)) {
|
|
1057
|
+
downloadByManager = true
|
|
1057
1058
|
}
|
|
1058
|
-
// console.log('
|
|
1059
|
+
// console.log('downloadByManager', downloadByManager)
|
|
1059
1060
|
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1061
|
+
if (downloadByManager) {
|
|
1062
|
+
//由瀏覽器的下載管理器下載, 使用get+stream
|
|
1063
|
+
|
|
1064
|
+
//token
|
|
1065
|
+
let token = getToken()
|
|
1066
|
+
if (ispm(token)) {
|
|
1067
|
+
token = await token
|
|
1068
|
+
}
|
|
1069
|
+
// console.log('token', token)
|
|
1064
1070
|
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1071
|
+
//send download-get-filename
|
|
1072
|
+
let msg = { fileId }
|
|
1073
|
+
let resMg = await send('download-get-filename', msg, { dataType: 'json', retry: retryDownload })
|
|
1074
|
+
// console.log('resMg', resMg)
|
|
1068
1075
|
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1076
|
+
//filename
|
|
1077
|
+
let filename = get(resMg, 'filename', '')
|
|
1078
|
+
// console.log('filename', filename)
|
|
1072
1079
|
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1080
|
+
//urlUse
|
|
1081
|
+
let urlUse = getUrlUse('download-get')
|
|
1082
|
+
// console.log('urlUse', urlUse)
|
|
1076
1083
|
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1084
|
+
//url
|
|
1085
|
+
let url = `${urlUse}?fileId=${fileId}&token=${token}`
|
|
1086
|
+
// console.log('url', url)
|
|
1087
|
+
|
|
1088
|
+
//透過a元素打url下載, 讓瀏覽器認定為直接下載模式, 由瀏覽器展示下載進度與排入正在下載清單
|
|
1089
|
+
let a = document.createElement('a')
|
|
1090
|
+
a.href = url
|
|
1091
|
+
a.download = filename
|
|
1092
|
+
a.click()
|
|
1093
|
+
|
|
1094
|
+
return filename
|
|
1095
|
+
}
|
|
1096
|
+
else {
|
|
1097
|
+
//通過axios下載得到blob, 回傳檔案名稱與blob供後續處理
|
|
1098
|
+
|
|
1099
|
+
//send download
|
|
1100
|
+
let msg = { fileId }
|
|
1101
|
+
let resMg = await send('download', msg, { ...opt, dataType: 'json', retry: retryDownload, cbProgress })
|
|
1102
|
+
// console.log('resMg', resMg)
|
|
1103
|
+
|
|
1104
|
+
return resMg
|
|
1105
|
+
}
|
|
1082
1106
|
|
|
1083
|
-
return filename
|
|
1084
1107
|
}
|
|
1085
1108
|
|
|
1086
1109
|
//download
|
package/web.html
CHANGED
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
|
|
25
25
|
<script>
|
|
26
26
|
|
|
27
|
+
//本機測試時須使用網址測試: http://localhost:8080/web.html, 否則前端下載無法使用變數download指定檔名
|
|
28
|
+
|
|
27
29
|
let opt = {
|
|
28
30
|
// FormData, //使用瀏覽器內建FormData, 非後端不須另外提供
|
|
29
31
|
url: 'http://localhost:8080',
|
|
@@ -152,13 +154,21 @@
|
|
|
152
154
|
function downloadLargeFile(){
|
|
153
155
|
let core = async()=>{
|
|
154
156
|
|
|
155
|
-
|
|
157
|
+
let downloadByManager = !document.getElementById('returnFile').checked
|
|
158
|
+
// console.log('downloadByManager',downloadByManager)
|
|
159
|
+
|
|
160
|
+
await wo.download(
|
|
161
|
+
'id-for-file',
|
|
156
162
|
function ({ prog, p, m }) {
|
|
157
163
|
// console.log('client web: download: prog', prog, p, m)
|
|
158
164
|
if (m === 'download') {
|
|
159
165
|
console.log('client web: download: prog', prog)
|
|
160
166
|
}
|
|
161
|
-
}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
downloadByManager
|
|
170
|
+
},
|
|
171
|
+
)
|
|
162
172
|
.then(function(res) {
|
|
163
173
|
console.log('client web: download: then', res)
|
|
164
174
|
})
|
|
@@ -197,7 +207,12 @@
|
|
|
197
207
|
<div style="padding:10px;">
|
|
198
208
|
|
|
199
209
|
<button onclick="downloadLargeFile()">download large file</button>
|
|
200
|
-
|
|
210
|
+
|
|
211
|
+
<label>
|
|
212
|
+
<input type="checkbox" id="returnFile">
|
|
213
|
+
return file
|
|
214
|
+
</label>
|
|
215
|
+
|
|
201
216
|
</div>
|
|
202
217
|
|
|
203
218
|
</body>
|