["WebApp 開啟方式"]
ArOZ Online WebApps 有時可能需要從檔案總管開啟檔案,而系統有3個方式來開啟檔案。
這種模式是直接使用index.php或index.html來顯示。就像普通網站一樣,不過可能會因程式沒有檢查VDI模式而錯誤地把使用者帶回主頁。
當然使用桌面圖示啟動WebApp時。 FloatWindow.php將會接收參數,而php 將加載至iframe中,你應該使用ao_module的功能來處理要求。 以下是FloatWindow.php的範例。
<?php
include_once '../auth.php';
?>
<html>
<body>
Now Loading...
<script src="FloatWindow.js"></script>
<script>
var uid = (new Date()).getTime();
var fw = new FloatWindow("index.php?mode=fw","Audio","music", uid,545,765,undefined,undefined,undefined,true);
fw.launch();
</script>
</body>
</html>
以下是FloatWindow.js的範例。
class FloatWindow {
constructor(src, title, iconTag="folder", uid ,ww=undefined, wh=undefined, posx=undefined, posy=undefined, resizable=true, glassEffect=false) {
this.src = location.href.replace(/[^/]*$/, '') + src;
this.title = title;
this.iconTag = iconTag;
this.uid = uid;
this.ww = ww;
this.wh = wh;
this.posx = posx;
this.posy = posy;
this.resizable = resizable;
this.glassEffect = glassEffect;
}
// Method
launch() {
parent.newEmbededWindow(this.src,this.title,this.iconTag,this.uid,this.ww,this.wh,this.posx,this.posy,this.resizable,this.glassEffect);
//console.log(this.src,this.title,this.iconTag,this.uid,this.ww,this.wh,this.posx,this.posy,this.resizable,this.glassEffect);
}
}
有關浮動視窗的更多詳細信息,請參見"Float Winodow"頁面。
嵌入式開啟模式(或另一個眾所周知的術語:使用{...}打開{...}是允許模組打開文件的其中一個功能。
這個功能需要index.php
和embedded.php
。 開發人員可以使用其中一個程式來執行文件打開要求。 在大部份情況下有兩種開啟方法。
在VDI模式下,桌面上的文件需要embedded.php
來啟動。
文件名和文件路徑可以從兩個get參數filename
和filepath
取得。
這是一個範例php,用於從參數接收文件名和文件路徑。
<?php
$filepath = "";
$filename = "";
if (isset($_GET['filepath'])){
$filepath = str_replace("./","",str_replace("../","",str_replace("\\","/",$_GET['filepath'])));
}
if (isset($_GET['filename'])){
$filename = $_GET['filename'];
}
?>
如果你想使用單獨的php來處理外部文件參數,您可以在embedded.php中建立處理接口,並在index.php中添加以下代碼,以令到文件可以正確打開 - 並重定向到embedded.php。
if (isset($_GET['filepath'])){
header("Location: embedded.php?filepath=" . $_GET['filepath']);
}
如果用戶在檔案總管上要求嵌入式模式,要求將被傳送到index.php而非embedded.php。 在這種情況下,用戶可以選擇將要求重定向到embedded.php或在index.php中處理。 在大多數情況下,我們建議將要求從index.php重定向到embedded.php或從embedded.php重定向到index.php,因為這能有效降低WebApp的開發成本。
值得注意的是,在大部份情況下,用戶將以VDI模式或普通模式啟動WebApp,在這兩種情況下,開發人員都應檢查VDI模式以安排WebApp介面。
###傳入路徑 filepath參數將提供**相對於/ AOR的文件位置或來自/ media / **的絕對路徑。 您的WebApp模組可能會接收三種之中任何類型的路徑。
1.內部文件路徑,以./
(aka / AOR)開頭,例如./Video/Uploads/ test.mp3
2.extDiskAccess處理的外置儲存裝備文件路徑,以./SystemAOB/functions/extDiskAccess.php?file = ...
開頭。
3.沒有extDiskAccess處理的外置儲存裝備文件路徑,例如
/media/Storage1/ test.mp3
`
對於類型1和類型2,您可以通過將文件路徑放在src
元素中直接將它們加載。
但是,對於類型3文件路徑,您將需要使用.SystemAOB/functions/extDiskAccess.php?file =
`調用外部儲存空間處理功能,然後輸人文件的絕對路徑。
以下是影片模組引用的文件路徑示例
if (file_exists($_GET['filepath'])|| strpos($_GET['filepath'],"extDiskAccess.php")){
echo '<video id="player" style="position:fixed; height:100%; max-width:100% ;top:0; left:0;" src="'.$_GET['filepath'].'" autoplay controls></video>';
$filename = basename($_GET['filepath'], ".mp4");
if (ctype_xdigit(str_replace("inith","",$filename)) && strlen(str_replace("inith","",$filename)) % 2 == 0) {
$decodedName = hex2bin(str_replace("inith","",$filename));
}else{
$decodedName = $filename;
}
}else{
die('<i class="remove icon"></i>API call error: 404 File not found.');
}