Ver código fonte

fix: joinUrl去除双斜杠

xzw 2 meses atrás
pai
commit
986f10bf49
3 arquivos alterados com 21 adições e 4 exclusões
  1. 2 2
      src/Potree.js
  2. 1 1
      src/custom/start.js
  3. 18 1
      src/custom/utils/Common.js

+ 2 - 2
src/Potree.js

@@ -630,9 +630,9 @@ export function load4dkkPanos(sceneCode, model, defaultRotation, done, tileRes){
         
         
         //path = `${prefix}/swkk/${sceneCode}/wwwroot/scene_view_data/${sceneCode}/images/vision.txt`
         //path = `${prefix}/swkk/${sceneCode}/wwwroot/scene_view_data/${sceneCode}/images/vision.txt`
         if(Potree.settings.urls.templates.vision){
         if(Potree.settings.urls.templates.vision){
-            path = prefix + Potree.Common.replaceAll(Potree.settings.urls.templates.vision, '{sceneCode}',  sceneCode)  
+            path = Potree.Common.joinUrl(prefix, Potree.Common.replaceAll(Potree.settings.urls.templates.vision, '{sceneCode}',  sceneCode) ) 
         }else{
         }else{
-            path = `${prefix}/scene_view_data/${sceneCode}/images/vision.txt`
+            path = Potree.Common.joinUrl(prefix,`/scene_view_data/${sceneCode}/images/vision.txt`)
         }  
         }  
     }
     }
     model.sceneCode = sceneCode
     model.sceneCode = sceneCode

+ 1 - 1
src/custom/start.js

@@ -994,7 +994,7 @@ export function mergeEditStart(dom, mapDom, {queryCloudLonLatUrl}={}){
                     Potree.settings.cloudAddMapping && (prefix2 += '/'+originDataset.mapping)
                     Potree.settings.cloudAddMapping && (prefix2 += '/'+originDataset.mapping)
                     let timeStamp = originDataset.updateTime ? originDataset.updateTime.replace(/[^0-9]/ig,'') : '';  //每重算一次后缀随updateTime更新一次 
                     let timeStamp = originDataset.updateTime ? originDataset.updateTime.replace(/[^0-9]/ig,'') : '';  //每重算一次后缀随updateTime更新一次 
                     //let cloudPath = `${Potree.settings.urls.prefix1}/${Potree.settings.webSite}/${sceneCode}/data/${sceneCode}/webcloud/cloud.js` 
                     //let cloudPath = `${Potree.settings.urls.prefix1}/${Potree.settings.webSite}/${sceneCode}/data/${sceneCode}/webcloud/cloud.js` 
-                    let cloudPath = `${prefix2}/${originDataset.webBin}`  //webBin添加原因:每次裁剪之类的操作会换路径,因为oss文件缓存太严重,更新慢
+                    let cloudPath = Potree.Common.joinUrl(prefix2, originDataset.webBin) //`${prefix2}/${originDataset.webBin}`  //webBin添加原因:每次裁剪之类的操作会换路径,因为oss文件缓存太严重,更新慢
                     dataset = originDataset
                     dataset = originDataset
                     loadCloud({ cloudPath, sceneName:originDataset.sceneName, sceneCode, timeStamp, color:originDataset.color})
                     loadCloud({ cloudPath, sceneName:originDataset.sceneName, sceneCode, timeStamp, color:originDataset.color})
                 }, sceneCode, onError, prefix1 )
                 }, sceneCode, onError, prefix1 )

+ 18 - 1
src/custom/utils/Common.js

@@ -255,7 +255,24 @@ var Common = {
             return str.replace(reg, e);        //str.split(f).join(e); */
             return str.replace(reg, e);        //str.split(f).join(e); */
         }
         }
     }, 
     }, 
-      
+    
+    cleanUrl(url){//斜杠处理   协议aaa://保留双斜杠,其余单斜杠
+        //分离协议和路径部分
+        const protocolMatch = url.match(/^(\w+:)\/{2,}/);
+
+        if (protocolMatch) {
+            const protocol = protocolMatch[1];
+            const path = url.slice(protocolMatch[0].length);
+            return protocol + '//' + path.replace(/\/+/g, '/');
+        } else {
+            return url.replace(/\/+/g, '/');
+        }
+    },
+    
+    joinUrl(){//拼接地址。总是出现前后多个/造成双斜杠或者缺斜杠的问题,处理一下
+        return this.cleanUrl(Array.from(arguments).join('/'))
+    },
+     
     dealURL(url=''){ 
     dealURL(url=''){ 
         let urlNew = this.replaceAll(url, "+", "%2B"); //this.replaceAll(url, "\\+", "%2B");// 浏览器似乎不支持访问带+的地址
         let urlNew = this.replaceAll(url, "+", "%2B"); //this.replaceAll(url, "\\+", "%2B");// 浏览器似乎不支持访问带+的地址