有關舊版FileIO (v1)請瀏覽這裡。 |
Table of Contents
|
概述
FileIO 主要從祭典版的分支 FTP 版中所移植強化,並為 PIO 版本的標準使用函式庫之一。藉由此一函式庫可以自由切換圖檔儲存的位置是遠端主機還是本機,並提供一套方法來操作圖檔。
技術細節
運作方式
config.php 設定檔內有 FILEIO_BACKEND 和 FILEIO_PARAMETER 常數設定,依其設定引入位於 fileio 目錄下不同的函式庫。而後便可以利用定義好的 API 存取圖檔,而不必再為連接 FTP 或是取得檔案資訊費心。
取得 FileIO 物件則可以透過 PMCLibrary 來取得。
require './lib/pmclibrary.php'; $FileIO = PMCLibrary::getFileIOInstance();
IndexFS
FileIO Index File Sytem, FileIO 索引式檔案系統
IndexFS,常簡稱 IFS。是 FileIO 的核心部分,為了將儲存在其他主機的圖檔視為本機圖檔並自由操作,構思出以索引方式連結圖檔並以此索引表當作圖檔本身來操作。其觀念有點像電腦的捷徑或鏈結檔案。
而這個索引背負著相當重要的任務,為了使索引表在讀寫時不是發生漏失狀況,預設會使用 SQLite 資料庫來儲存索引。而為了相容性考量,舊有的文字檔記錄方式仍然存在,但建議能打開 PHP 對 SQLite 的支援以使用 SQLite。
儲存的除了檔名以外,尚有檔案大小及檔案位置。在計算圖檔總容量時,能減少 I/O 詢問快速自索引計算得出結果。
API 列表
完整列表請參見 FileIO API 規格 條目。
使用範例
先取得 $FileIO 物件,再直接使用如 $FileIO->getImageFilesize('1.jpg') 方式呼叫即可。
config.php 參數設定
FILEIO_BACKEND
此項目為設定 FileIO 使用的後端儲存方式。預設是 'normal' 也就是利用本機儲存。以下是目前支援的:
- normal : 本機端儲存
- ftp : 同祭典版 FTP 分支,利用 FTP 將圖檔傳至遠端伺服器,再要求遠端圖片
- imageshack : ImageShack 存圖網站,如果有申請帳號將可以上傳於個人頁面內集中管理
- satellite : 原衛星計畫版本,利用一個檔案較小的衛星 PHP / Perl CGI 負責將圖存到遠端伺服器並管理
FILEIO_INDEXLOG
此項目為儲存遠端檔案對應的索引記錄檔案檔名,一般來說保留預設值即可。
FILEIO_PARAMETER
此項目為設定 FileIO 後端一些設定的參數,以序列化過的陣列儲存,以下介紹各個後端需要的參數:
normal 情況
不需設定,可以留空反正後端會自動忽視。
像這樣:define("FILEIO_PARAMETER", '');
ftp 情況
以下為陣列結構:
[0] : FTP 伺服器位置
[1] : FTP 伺服器埠號
[2] : FTP 使用者帳號
[3] : FTP 使用者密碼
[4] : 是否使用被動模式? (PASV: 使用, NOPASV: 不使用)
[5] : FTP 預設工作目錄
[6] : 工作目錄對應 URL
[7] : 預覽圖是否上傳至遠端 (true: 是, false: 否,使用本機檔案)
以下為例子:
define("FILEIO_PARAMETER", serialize(array('ftp.example.com', 21, 'demo', 'demo', 'PASV', '/pwd/', 'http://www.example.com/~demo/pwd/', false)));
可參考專頁 FileIO: FTP 說明。
imageshack 情況
以下為陣列結構:
[0] : ImageShack 註冊金鑰 (即登入頁面 setlogin.php 網址後面附帶一串編碼)
以下為例子:
define("FILEIO_PARAMETER", serialize(array('00000000000000000000000000000000')));
satellite 情況
以下為陣列結構:
[0] : 衛星程式遠端 URL 位置
[1] : 是否使用 Transload 方式要求衛星程式抓取圖檔 (true:是 false:否,使用傳統 HTTP 上傳)
[2] : 傳輸認證金鑰
[3] : 遠端目錄對應 URL
[4] : 預覽圖是否上傳至遠端 (true: 是, false: 否,使用本機檔案)
以下為例子:
define("FILEIO_PARAMETER", serialize(array('http://www.example.com/~demo/satellite.cgi', true, '12345678', 'http://www.example.com/~demo/src/', true)));
預覽網頁:
關閉預覽