w-converhp 2.0.39 → 2.0.41

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.
@@ -529,7 +529,7 @@
529
529
  <br class="clear">
530
530
 
531
531
  <footer>
532
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025 16:07:51 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
532
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Thu Apr 24 2025 09:18:48 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
533
533
  </footer>
534
534
 
535
535
  <script>prettyPrint();</script>
@@ -724,6 +724,33 @@ function WConverhpClient(opt) {
724
724
  let chunkTotal = Math.ceil(fileTotalSize / sizeSlice)
725
725
  // console.log('chunkTotal', chunkTotal)
726
726
 
727
+ //progCount, progWeightSlice
728
+ let progCount = 0
729
+ let progWeightSlice = 0.99 //上傳階段進度使用99%
730
+ // let progWeightMerge = 0.01 //合併階段進度使用1%
731
+
732
+ //cbProgressSlice
733
+ let cbProgressSlice = (msg) => {
734
+ let perc = msg.prog
735
+ let dir = msg.m
736
+ if (dir === 'upload' &amp;&amp; perc === 100) {
737
+ progCount++
738
+ let r = progCount / chunkTotal
739
+ let prog = r * progWeightSlice * 100
740
+ let psiz = r * fileTotalSize
741
+ cbProgress({ prog, p: psiz, m: 'upload' })
742
+ }
743
+ }
744
+
745
+ //cbProgressMerge
746
+ let cbProgressMerge = (msg) => {
747
+ let perc = msg.prog
748
+ let dir = msg.m
749
+ if (dir === 'download' &amp;&amp; perc === 100) {
750
+ cbProgress({ prog: 100, p: fileTotalSize, m: 'upload' })
751
+ }
752
+ }
753
+
727
754
  //fileTotalHash
728
755
  // console.log(`calc hash for fileTotalSize[${fileTotalSize}]...`)
729
756
  let fileTotalHash = await calcHash(bb)
@@ -741,20 +768,22 @@ function WConverhpClient(opt) {
741
768
  // bSls: true,
742
769
  // slks: [
743
770
  // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
744
- // 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
745
- // 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
746
- // 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
747
- // 48, 49, 50, 51, 52, 53
748
771
  // ]
749
772
  // }
750
773
 
751
774
  //check
752
775
  if (resUpCkt.bAllHash) {
753
776
  // console.log('已有上傳大檔')
777
+
778
+ //cbProgressMerge
779
+ cbProgressMerge({ prog: 100, m: 'download' }) //觸發上傳完畢後之下載回應, 故m須為download
780
+
781
+ //resMg, 直接回傳
754
782
  let resMg = {
755
783
  filename: fileTotalName,
756
784
  path: resUpCkt.path,
757
785
  }
786
+
758
787
  return resMg
759
788
  }
760
789
 
@@ -819,33 +848,6 @@ function WConverhpClient(opt) {
819
848
  let packageId = fileTotalHash
820
849
  // console.log('packageId', packageId)
821
850
 
822
- //progCount, progWeightSlice
823
- let progCount = 0
824
- let progWeightSlice = 0.99 //上傳階段進度使用99%
825
- // let progWeightMerge = 0.01 //合併階段進度使用1%
826
-
827
- //cbProgressSlice
828
- let cbProgressSlice = (msg) => {
829
- let perc = msg.prog
830
- let dir = msg.m
831
- if (dir === 'upload' &amp;&amp; perc === 100) {
832
- progCount++
833
- let r = progCount / chunkTotal
834
- let prog = r * progWeightSlice * 100
835
- let psiz = r * fileTotalSize
836
- cbProgress({ prog, p: psiz, m: 'upload' })
837
- }
838
- }
839
-
840
- //cbProgressMerge
841
- let cbProgressMerge = (msg) => {
842
- let perc = msg.prog
843
- let dir = msg.m
844
- if (dir === 'download' &amp;&amp; perc === 100) {
845
- cbProgress({ prog: 100, p: fileTotalSize, m: 'upload' })
846
- }
847
- }
848
-
849
851
  //upload slice
850
852
  // console.log(`upload slice...`)
851
853
  for (let i = 0; i &lt; chunkTotal; i++) {
@@ -906,22 +908,33 @@ function WConverhpClient(opt) {
906
908
  // }
907
909
 
908
910
  //check
909
- if (res.state === 'done') {
911
+ if (res.state === 'success') {
912
+
913
+ //clearInterval
914
+ clearInterval(t)
910
915
 
911
916
  //cbProgressMerge
912
- cbProgressMerge({ prog: 100, m: 'download' })
917
+ cbProgressMerge({ prog: 100, m: 'download' }) //觸發上傳完畢後之下載回應, 故m須為download
913
918
 
914
- //resolve, 前端偵測state為'done'時提取msg顯示
919
+ //resolve, state為'success'時提取msg回傳
920
+ pm.resolve(res.msg)
921
+
922
+ }
923
+ else if (res.state === 'error') {
924
+ console.log('merge-slices-get error', res)
925
+
926
+ //clearInterval
927
+ clearInterval(t)
928
+
929
+ //reject, state為'error'時會於msg提供錯誤訊息
915
930
  pm.resolve(res.msg)
916
931
 
917
932
  }
918
933
 
919
934
  })
920
935
  .catch((err) => {
921
- console.log(err)
922
- })
923
- .finally(() => {
924
- clearInterval(t)
936
+ console.log('merge-slices-get catch', err)
937
+ //可能發生網路斷訊錯誤, 不clearInterval, 持續輪循測試合併大檔之狀態
925
938
  })
926
939
 
927
940
  }, 2000)
@@ -930,11 +943,11 @@ function WConverhpClient(opt) {
930
943
  }
931
944
 
932
945
  //checkMerging
933
- let resUpMgr = await checkMerging()
934
- // console.log('resUpMgr', resUpMgr)
946
+ let resMg = await checkMerging()
947
+ // console.log('resMg', resMg)
935
948
 
936
949
  // console.log(`upload slice done`)
937
- return resUpMgr
950
+ return resMg
938
951
  }
939
952
 
940
953
  //execute
@@ -1094,7 +1107,7 @@ export default WConverhpClient
1094
1107
  <br class="clear">
1095
1108
 
1096
1109
  <footer>
1097
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025 16:07:51 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
1110
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Thu Apr 24 2025 09:18:48 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
1098
1111
  </footer>
1099
1112
 
1100
1113
  <script>prettyPrint();</script>
@@ -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="WConverhpServer.mjs.html">WConverhpServer.mjs</a>, <a href="WConverhpServer.mjs.html#line197">line 197</a>
83
+ <a href="WConverhpServer.mjs.html">WConverhpServer.mjs</a>, <a href="WConverhpServer.mjs.html#line192">line 192</a>
84
84
  </li></ul></dd>
85
85
 
86
86
 
@@ -582,46 +582,6 @@
582
582
 
583
583
 
584
584
 
585
- <tr>
586
-
587
- <td class="name"><code>delayForBasic</code></td>
588
-
589
-
590
- <td class="type">
591
-
592
-
593
- <span class="param-type">Integer</span>
594
-
595
-
596
-
597
-
598
- </td>
599
-
600
-
601
- <td class="attributes">
602
-
603
- &lt;optional><br>
604
-
605
-
606
-
607
-
608
-
609
- </td>
610
-
611
-
612
-
613
- <td class="default">
614
-
615
- <code>0</code>
616
-
617
- </td>
618
-
619
-
620
- <td class="description last"><p>輸入基本API用延遲響應時間,單位ms,預設0</p></td>
621
- </tr>
622
-
623
-
624
-
625
585
  <tr>
626
586
 
627
587
  <td class="name"><code>delayForSlice</code></td>
@@ -789,7 +749,7 @@
789
749
  <br class="clear">
790
750
 
791
751
  <footer>
792
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025 16:07:51 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
752
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Thu Apr 24 2025 09:18:48 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
793
753
  </footer>
794
754
 
795
755
  <script>prettyPrint();</script>
@@ -70,7 +70,7 @@ import obj2u8arr from 'wsemi/src/obj2u8arr.mjs'
70
70
  import u8arr2obj from 'wsemi/src/u8arr2obj.mjs'
71
71
  import fsIsFolder from 'wsemi/src/fsIsFolder.mjs'
72
72
  import fsCreateFolder from 'wsemi/src/fsCreateFolder.mjs'
73
- import managerMergeSlices from './managerMergeSlices.mjs'
73
+ import mmg from './managerMergeSlices.mjs'
74
74
  // import checkTotalHash from './checkTotalHash.mjs'
75
75
  import checkTotalHash from './checkTotalHash.wk.umd.js'
76
76
  // import checkSlicesHash from './checkSlicesHash.mjs'
@@ -82,10 +82,6 @@ import checkSlicesHash from './checkSlicesHash.wk.umd.js'
82
82
  //回傳前端(browser)時, 針對超大檔, 可用POST並用stream回傳但還要處理進度條, 若要交由瀏覽器下載器處理, 只能用GET並用stream回傳, 且前端只能用window.location.href或a.href+a.click()下載
83
83
 
84
84
 
85
- //mmg
86
- let mmg = managerMergeSlices()
87
-
88
-
89
85
  /**
90
86
  * 建立Hapi伺服器
91
87
  *
@@ -100,7 +96,6 @@ let mmg = managerMergeSlices()
100
96
  * @param {Integer} [opt.sizeSlice=1024*1024] 輸入切片上傳檔案之切片檔案大小整數,單位為Byte,預設為1024*1024
101
97
  * @param {Function} [opt.verifyConn=()=>{return true}] 輸入呼叫API時檢測函數,預設()=>{return true}
102
98
  * @param {Array} [opt.corsOrigins=['*']] 輸入允許跨域網域陣列,若給予['*']代表允許全部,預設['*']
103
- * @param {Integer} [opt.delayForBasic=0] 輸入基本API用延遲響應時間,單位ms,預設0
104
99
  * @param {Integer} [opt.delayForSlice=100] 輸入切片上傳檔案API用延遲響應時間,單位ms,預設100
105
100
  * @param {Boolean} [opt.serverHapi=null] 輸入外部提供Hapi伺服器物件,預設null
106
101
  * @returns {Object} 回傳事件物件,可監聽事件execute、upload、handler
@@ -302,13 +297,6 @@ function WConverhpServer(opt = {}) {
302
297
  corsOrigins = ['*']
303
298
  }
304
299
 
305
- //delayForBasic
306
- let delayForBasic = get(opt, 'delayForBasic', '')
307
- if (!isp0int(delayForBasic)) {
308
- delayForBasic = 0
309
- }
310
- delayForBasic = cint(delayForBasic)
311
-
312
300
  //delayForSlice
313
301
  let delayForSlice = get(opt, 'delayForSlice', '')
314
302
  if (!isp0int(delayForSlice)) {
@@ -579,20 +567,24 @@ function WConverhpServer(opt = {}) {
579
567
  chunks.push(chunk)
580
568
  // console.log('chunk.length', chunk.length)
581
569
 
582
- //setTimeout, 延遲觸發cb
583
- setTimeout(() => {
584
- cb()
585
- }, delayForBasic)
570
+ //cb
571
+ cb()
586
572
 
587
573
  }
588
574
  })
589
575
 
576
+ //finish
577
+ smw.on('finish', () => {
578
+ console.log('[smw] finished')
579
+ })
580
+
590
581
  //pipe
591
582
  req.payload.pipe(smw)
592
583
 
593
584
  //end
594
585
  req.payload.on('end', () => {
595
586
  // console.log(`receive payload done`)
587
+ console.log('[req.payload] end')
596
588
 
597
589
  //bb
598
590
  let bb = Buffer.concat(chunks)
@@ -606,6 +598,11 @@ function WConverhpServer(opt = {}) {
606
598
 
607
599
  })
608
600
 
601
+ //close
602
+ req.payload.on('close', () => {
603
+ console.log('[req.payload] close')
604
+ })
605
+
609
606
  //error
610
607
  req.payload.on('error', (err) => {
611
608
  // console.log(`receive payload err`, err)
@@ -811,14 +808,15 @@ function WConverhpServer(opt = {}) {
811
808
 
812
809
  //out
813
810
  out = {
814
- queueId,
815
811
  state: r.state,
812
+ msg: r.msg, //state為'error'時會於msg提供錯誤訊息
813
+ queueId,
816
814
  filename,
817
815
  path: r.path,
818
816
  }
819
817
 
820
818
  //check
821
- if (r.state === 'done') {
819
+ if (r.state === 'success') {
822
820
 
823
821
  //ri
824
822
  let ri = {
@@ -831,9 +829,9 @@ function WConverhpServer(opt = {}) {
831
829
  let ro = await procUpload(ri)
832
830
  // console.log('procUpload done', ro)
833
831
 
834
- //out merge, ro須附加至msg, 才供前端偵測state為'done'時提取msg顯示
832
+ //out merge, ro須附加至msg, 才供前端偵測state為'success'時提取msg顯示
835
833
  out = {
836
- ...out,
834
+ ...out, //state為'success'時msg為空字串, 直接被ro複寫至msg即可
837
835
  msg: ro,
838
836
  }
839
837
 
@@ -1477,7 +1475,7 @@ export default WConverhpServer
1477
1475
  <br class="clear">
1478
1476
 
1479
1477
  <footer>
1480
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025 16:07:51 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
1478
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Thu Apr 24 2025 09:18:48 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
1481
1479
  </footer>
1482
1480
 
1483
1481
  <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 Tue Apr 15 2025 16:07:51 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
74
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Thu Apr 24 2025 09:18:48 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.39",
3
+ "version": "2.0.41",
4
4
  "main": "dist/w-converhp-server.umd.js",
5
5
  "dependencies": {
6
6
  "@hapi/hapi": "^21.4.0",
package/scla.mjs CHANGED
@@ -5,6 +5,7 @@ import w from 'wsemi'
5
5
  import FormData from 'form-data'
6
6
  import WConverhpClient from './src/WConverhpClient.mjs'
7
7
 
8
+
8
9
  let ms = []
9
10
 
10
11
  let opt = {
@@ -677,6 +677,33 @@ function WConverhpClient(opt) {
677
677
  let chunkTotal = Math.ceil(fileTotalSize / sizeSlice)
678
678
  // console.log('chunkTotal', chunkTotal)
679
679
 
680
+ //progCount, progWeightSlice
681
+ let progCount = 0
682
+ let progWeightSlice = 0.99 //上傳階段進度使用99%
683
+ // let progWeightMerge = 0.01 //合併階段進度使用1%
684
+
685
+ //cbProgressSlice
686
+ let cbProgressSlice = (msg) => {
687
+ let perc = msg.prog
688
+ let dir = msg.m
689
+ if (dir === 'upload' && perc === 100) {
690
+ progCount++
691
+ let r = progCount / chunkTotal
692
+ let prog = r * progWeightSlice * 100
693
+ let psiz = r * fileTotalSize
694
+ cbProgress({ prog, p: psiz, m: 'upload' })
695
+ }
696
+ }
697
+
698
+ //cbProgressMerge
699
+ let cbProgressMerge = (msg) => {
700
+ let perc = msg.prog
701
+ let dir = msg.m
702
+ if (dir === 'download' && perc === 100) {
703
+ cbProgress({ prog: 100, p: fileTotalSize, m: 'upload' })
704
+ }
705
+ }
706
+
680
707
  //fileTotalHash
681
708
  // console.log(`calc hash for fileTotalSize[${fileTotalSize}]...`)
682
709
  let fileTotalHash = await calcHash(bb)
@@ -694,20 +721,22 @@ function WConverhpClient(opt) {
694
721
  // bSls: true,
695
722
  // slks: [
696
723
  // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
697
- // 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
698
- // 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
699
- // 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
700
- // 48, 49, 50, 51, 52, 53
701
724
  // ]
702
725
  // }
703
726
 
704
727
  //check
705
728
  if (resUpCkt.bAllHash) {
706
729
  // console.log('已有上傳大檔')
730
+
731
+ //cbProgressMerge
732
+ cbProgressMerge({ prog: 100, m: 'download' }) //觸發上傳完畢後之下載回應, 故m須為download
733
+
734
+ //resMg, 直接回傳
707
735
  let resMg = {
708
736
  filename: fileTotalName,
709
737
  path: resUpCkt.path,
710
738
  }
739
+
711
740
  return resMg
712
741
  }
713
742
 
@@ -772,33 +801,6 @@ function WConverhpClient(opt) {
772
801
  let packageId = fileTotalHash
773
802
  // console.log('packageId', packageId)
774
803
 
775
- //progCount, progWeightSlice
776
- let progCount = 0
777
- let progWeightSlice = 0.99 //上傳階段進度使用99%
778
- // let progWeightMerge = 0.01 //合併階段進度使用1%
779
-
780
- //cbProgressSlice
781
- let cbProgressSlice = (msg) => {
782
- let perc = msg.prog
783
- let dir = msg.m
784
- if (dir === 'upload' && perc === 100) {
785
- progCount++
786
- let r = progCount / chunkTotal
787
- let prog = r * progWeightSlice * 100
788
- let psiz = r * fileTotalSize
789
- cbProgress({ prog, p: psiz, m: 'upload' })
790
- }
791
- }
792
-
793
- //cbProgressMerge
794
- let cbProgressMerge = (msg) => {
795
- let perc = msg.prog
796
- let dir = msg.m
797
- if (dir === 'download' && perc === 100) {
798
- cbProgress({ prog: 100, p: fileTotalSize, m: 'upload' })
799
- }
800
- }
801
-
802
804
  //upload slice
803
805
  // console.log(`upload slice...`)
804
806
  for (let i = 0; i < chunkTotal; i++) {
@@ -859,22 +861,33 @@ function WConverhpClient(opt) {
859
861
  // }
860
862
 
861
863
  //check
862
- if (res.state === 'done') {
864
+ if (res.state === 'success') {
865
+
866
+ //clearInterval
867
+ clearInterval(t)
863
868
 
864
869
  //cbProgressMerge
865
- cbProgressMerge({ prog: 100, m: 'download' })
870
+ cbProgressMerge({ prog: 100, m: 'download' }) //觸發上傳完畢後之下載回應, 故m須為download
866
871
 
867
- //resolve, 前端偵測state為'done'時提取msg顯示
872
+ //resolve, state為'success'時提取msg回傳
873
+ pm.resolve(res.msg)
874
+
875
+ }
876
+ else if (res.state === 'error') {
877
+ console.log('merge-slices-get error', res)
878
+
879
+ //clearInterval
880
+ clearInterval(t)
881
+
882
+ //reject, state為'error'時會於msg提供錯誤訊息
868
883
  pm.resolve(res.msg)
869
884
 
870
885
  }
871
886
 
872
887
  })
873
888
  .catch((err) => {
874
- console.log(err)
875
- })
876
- .finally(() => {
877
- clearInterval(t)
889
+ console.log('merge-slices-get catch', err)
890
+ //可能發生網路斷訊錯誤, 不clearInterval, 持續輪循測試合併大檔之狀態
878
891
  })
879
892
 
880
893
  }, 2000)
@@ -883,11 +896,11 @@ function WConverhpClient(opt) {
883
896
  }
884
897
 
885
898
  //checkMerging
886
- let resUpMgr = await checkMerging()
887
- // console.log('resUpMgr', resUpMgr)
899
+ let resMg = await checkMerging()
900
+ // console.log('resMg', resMg)
888
901
 
889
902
  // console.log(`upload slice done`)
890
- return resUpMgr
903
+ return resMg
891
904
  }
892
905
 
893
906
  //execute
@@ -23,7 +23,7 @@ import obj2u8arr from 'wsemi/src/obj2u8arr.mjs'
23
23
  import u8arr2obj from 'wsemi/src/u8arr2obj.mjs'
24
24
  import fsIsFolder from 'wsemi/src/fsIsFolder.mjs'
25
25
  import fsCreateFolder from 'wsemi/src/fsCreateFolder.mjs'
26
- import managerMergeSlices from './managerMergeSlices.mjs'
26
+ import mmg from './managerMergeSlices.mjs'
27
27
  // import checkTotalHash from './checkTotalHash.mjs'
28
28
  import checkTotalHash from './checkTotalHash.wk.umd.js'
29
29
  // import checkSlicesHash from './checkSlicesHash.mjs'
@@ -35,10 +35,6 @@ import checkSlicesHash from './checkSlicesHash.wk.umd.js'
35
35
  //回傳前端(browser)時, 針對超大檔, 可用POST並用stream回傳但還要處理進度條, 若要交由瀏覽器下載器處理, 只能用GET並用stream回傳, 且前端只能用window.location.href或a.href+a.click()下載
36
36
 
37
37
 
38
- //mmg
39
- let mmg = managerMergeSlices()
40
-
41
-
42
38
  /**
43
39
  * 建立Hapi伺服器
44
40
  *
@@ -53,7 +49,6 @@ let mmg = managerMergeSlices()
53
49
  * @param {Integer} [opt.sizeSlice=1024*1024] 輸入切片上傳檔案之切片檔案大小整數,單位為Byte,預設為1024*1024
54
50
  * @param {Function} [opt.verifyConn=()=>{return true}] 輸入呼叫API時檢測函數,預設()=>{return true}
55
51
  * @param {Array} [opt.corsOrigins=['*']] 輸入允許跨域網域陣列,若給予['*']代表允許全部,預設['*']
56
- * @param {Integer} [opt.delayForBasic=0] 輸入基本API用延遲響應時間,單位ms,預設0
57
52
  * @param {Integer} [opt.delayForSlice=100] 輸入切片上傳檔案API用延遲響應時間,單位ms,預設100
58
53
  * @param {Boolean} [opt.serverHapi=null] 輸入外部提供Hapi伺服器物件,預設null
59
54
  * @returns {Object} 回傳事件物件,可監聽事件execute、upload、handler
@@ -255,13 +250,6 @@ function WConverhpServer(opt = {}) {
255
250
  corsOrigins = ['*']
256
251
  }
257
252
 
258
- //delayForBasic
259
- let delayForBasic = get(opt, 'delayForBasic', '')
260
- if (!isp0int(delayForBasic)) {
261
- delayForBasic = 0
262
- }
263
- delayForBasic = cint(delayForBasic)
264
-
265
253
  //delayForSlice
266
254
  let delayForSlice = get(opt, 'delayForSlice', '')
267
255
  if (!isp0int(delayForSlice)) {
@@ -532,20 +520,24 @@ function WConverhpServer(opt = {}) {
532
520
  chunks.push(chunk)
533
521
  // console.log('chunk.length', chunk.length)
534
522
 
535
- //setTimeout, 延遲觸發cb
536
- setTimeout(() => {
537
- cb()
538
- }, delayForBasic)
523
+ //cb
524
+ cb()
539
525
 
540
526
  }
541
527
  })
542
528
 
529
+ //finish
530
+ smw.on('finish', () => {
531
+ console.log('[smw] finished')
532
+ })
533
+
543
534
  //pipe
544
535
  req.payload.pipe(smw)
545
536
 
546
537
  //end
547
538
  req.payload.on('end', () => {
548
539
  // console.log(`receive payload done`)
540
+ console.log('[req.payload] end')
549
541
 
550
542
  //bb
551
543
  let bb = Buffer.concat(chunks)
@@ -559,6 +551,11 @@ function WConverhpServer(opt = {}) {
559
551
 
560
552
  })
561
553
 
554
+ //close
555
+ req.payload.on('close', () => {
556
+ console.log('[req.payload] close')
557
+ })
558
+
562
559
  //error
563
560
  req.payload.on('error', (err) => {
564
561
  // console.log(`receive payload err`, err)
@@ -764,14 +761,15 @@ function WConverhpServer(opt = {}) {
764
761
 
765
762
  //out
766
763
  out = {
767
- queueId,
768
764
  state: r.state,
765
+ msg: r.msg, //state為'error'時會於msg提供錯誤訊息
766
+ queueId,
769
767
  filename,
770
768
  path: r.path,
771
769
  }
772
770
 
773
771
  //check
774
- if (r.state === 'done') {
772
+ if (r.state === 'success') {
775
773
 
776
774
  //ri
777
775
  let ri = {
@@ -784,9 +782,9 @@ function WConverhpServer(opt = {}) {
784
782
  let ro = await procUpload(ri)
785
783
  // console.log('procUpload done', ro)
786
784
 
787
- //out merge, ro須附加至msg, 才供前端偵測state為'done'時提取msg顯示
785
+ //out merge, ro須附加至msg, 才供前端偵測state為'success'時提取msg顯示
788
786
  out = {
789
- ...out,
787
+ ...out, //state為'success'時msg為空字串, 直接被ro複寫至msg即可
790
788
  msg: ro,
791
789
  }
792
790
 
@@ -40,8 +40,8 @@ let checkSlicesHash = async(fileSliceHashs, fileHash, pathUploadTemp) => {
40
40
  _fileHash = res
41
41
  })
42
42
  .catch((err) => {
43
- console.log(err)
44
43
  console.log(`fsIsFile(_pathFile)`, _pathFile, fsIsFile(_pathFile))
44
+ console.log(err)
45
45
  })
46
46
  // console.log('_fileHash', _fileHash)
47
47