為了支援大部份語言,ArOZ Online會對存儲在ArOZ根目錄及外部存儲空間中的所有文件和資料夾名使用全新的名稱編碼方法。
此方法首先於Upload Manager模組中使用,本方法成功解決了Window系統上UTF-8檔案名無法上傳的問題。 因此,檔案名和文件夾名被命名為“um-file方法”(或umfilename的縮寫)。
UMFilename由三部分組成。結構如下:
其中“ inith”表示以十六進制開頭。
##基於PHP的轉換
以下部分說明了將umfilename和從umfilename轉換為UTF-8檔案名的方法。
### UTF-8檔案名到UM檔案名
這是將UTF-8檔案名/文件夾名轉換為umfilename / hexfoldername的方法。
//Convert file $ext = pathinfo($filename, PATHINFO_EXTENSION); $fname = basename($filename, "." .$ext); $umfilename = "inith" . bin2hex($fname) . $ext;
//Convert folder $hexfoldername = bin2hex(basename($foldername));
### UM檔案名轉換為UTF-8檔案名
要將UM檔案名轉換回UTF-8文件名,您可以使用以下代碼。
//Convert file if (substr(basename($filename),0,5) === "inith"){
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$orgname = str_replace("inith","",basename($filename,"." . $ext));
if (ctype_xdigit($orgname) && strlen($orgname) % 2 == 0) {
$orgname = hex2bin($orgname);
}
$decodedName = dirname($filename) . "/" . $orgname . "." . $ext;
}
//Convert folder if (ctype_xdigit($foldername) && strlen($foldername) % 2 == 0) {
$decodedName = hex2bin($foldername);
}
##基於JavaScript的轉換
從Beta開始,ao_module中的ao_module_codec就支援基於Javascript的umfilename解碼。 要使用它們,只需引用並調用下面的函數。
ao_module_codec.decodeUmFilename(umfilename_here);
ao_module_codec.decodeHexFoldername(hexFolderName_here); ```
請注意,ao_module包裝器不支援將UTF-8檔案名到UM檔案名。 您應該避免在客戶端執行um-file編碼,而且umfilename的原目的是解決伺服器端的本地化問題。
UMFilename和HexFoldername以易於閱讀的格式顯示在ArOZ Online中的檔案瀏覽器中。
對於Linux文件系統(或Windows NTFS,如果在Windows上使用系統),若編碼是umfilename或hexfoldername,該文件的背景顏色將更新為其他顏色。 顏色如下。
e檔案命名方法</ th> | 編碼方式</ th> | 顏色</ th> </ TR> </ THEAD> |
---|---|---|
預設(UTF-8)</ td> | 無</ TD> | 白</ TD> </ TR> |
UM-文件名</ TD> | “ inith” + bin2hex({original_filename})+“。 + {original_ext} </ td> | 藍</ TD> </ TR> |
HEX-資料夾名稱</ TD> | BIN2HEX({original_foldername})</ TD> | 綠色</ TD> </ TR> </ TBODY> </ TABLE> |