Table of Contents
|
規格版本
Version 0.3 : 2011/02/26
Version 0.2 : 2006/12/04 by scribe (物件導向化)
Version 0.1 : 2006/09/04 by RT
方法一覽
public class FileIO
init
imageExists
deleteImage
uploadImage
getImageFilesize
getImageURL
getImageLocalURL
remoteImageExists
getCurrentStorageSize
updateStorageSize
resolveThumbName
方法細節
0.3 更動點
全面使用索引
以前只有檔案存放在外部空間才需要使用索引,現在存放在本機的檔案也使用索引來加速。
新增 getCurrentStorageSize
將原本 total_size() 的計算圖檔總大小的任務收回,由 FileIO 親自處理。使用索引內記載的檔案大小值來加總,省去實際 I/O 操作的步驟。
修改 deleteImage 回傳值
deleteImage 現在如果刪除成功會回傳已刪除的圖檔總大小值,如果刪除失敗則回傳 0。
0.2 更動點
物件導向化
使用 $FileIO->getImageURL('1.jpg') 方式存取 (變數 $FileIO 在 FileIO 載入後自動建立),辨別 PHP 內建函式和 FileIO 更為容易。而也新增 fileio 資料夾,其內存放 fileio.XXX.php,仿照 PIO 方式以 Kernel Switcher 切換,可以自由擴充。
定義圖像索引檔
為了知道檔案的資訊,首先要先建立圖像索引檔,記錄檔名、檔案大小、對應 URL,以下是範例:
1.jpg 210235 http://img214.imageshack.us/img214/7053/creative0cj.jpg
1_s.jpg 21523 http://img214.imageshack.us/img214/7053/creative0cj.th.jpg
而利用索引方式,以檔名去對應實體圖檔位置 (類似別名、 Symlink 的觀念)。刪除索引記錄就等於刪除檔案 (FTP 模式會去要求刪除遠端檔案),以索引為主的一種做法。
註:儲存在本機的檔案不需要此索引檔。 (0.3 版修改)
廢除 file_func('imgsize')
目前資料來源儲存結構已利用 $imgw, $imgh, $tw, $th 儲存尺寸相關資訊。
增加 getImageURL 方法
一方面用以相容 ImageShack,一方面也可以在此套入 CoralCDN 的網址,不必再委由主程式。
如果 XMLAPI 盛行之後,用這種方法可以對應很多網路/貼圖空間。
init
public void init()
初始化圖像索引檔 (記錄檔名、檔案大小、對應 URL 等資訊)
imageExists
public boolean imageExists(String $imgname)
檢查圖檔是否存在,如果不存在回傳 false,如果存在回傳 true。
參數:
$imgname - 圖檔檔名 (ex: 1234567890123.jpg)
回傳值: 圖檔是否存在
deleteImage
public int deleteImage(String $imgname)
public int deleteImage(array $imgname)
刪除圖檔。 $imgname 支援單一字串檔名及字串陣列檔名。
參數:
$imgname - 圖檔檔名 (ex: 1234567890123.jpg)
回傳值: 刪除的圖檔總大小值 (單位 byte)。如果沒有刪除則回傳 0。
uploadImage
public boolean uploadImage(String $imgname='', String $imgpath='', int $imgsize=0)
上傳圖檔,同時寫入圖像索引檔。如果沒有指定 $imgname 則是詢問 FileIO 是否支援圖檔上傳步驟。
參數:
$imgname - 圖檔檔名 (ex: 1234567890123.jpg)
$imgpath - 圖檔實體路徑,上傳前的暫存檔案會留在主機內,上傳完後再刪除
$imgsize - 圖檔檔案 byte 大小
回傳值: ($imgname 為空) 是否支援上傳 / 是否上傳成功
getImageFilesize
public mixed getImageFilesize(String $imgname)
取得圖檔的檔案大小,其單位是 byte 。如果圖檔不存在會回傳 false。
參數:
$imgname - 圖檔檔名 (ex: 1234567890123.jpg)
回傳值: 圖檔檔案大小 / 圖檔不存在 (false)
getImageURL
public String getImageURL(String $imgname)
取得圖檔 URL 位置以供 <img> 和 <a> 標籤取得檔案位置
參數:
$imgname - 圖檔檔名 (ex: 1234567890123.jpg)
回傳值: 圖檔 URL 位置
getImageLocalURL
public String getImageLocalURL(String $imgname)
取得本機端圖檔完整 URL 位置。 (尚未上傳至遠端主機,暫存在本機端檔案的可存取 URL)
參數:
$imgname - 圖檔檔名 (ex: 1234567890123.jpg)
回傳值: 本機端圖檔 URL 位置
remoteImageExists
public boolean remoteImageExists(String $img)
實際查詢圖檔是否存在於外部空間。以 file_get_contents() 嘗試請求遠端圖檔看看是否存在。
參數:
$img - 圖檔檔名 (ex: 1234567890123.jpg)
回傳值: 外部空間圖檔是否實際存在
getCurrentStorageSize
public int getCurrentStorageSize()
取得圖檔儲存總大小值。
回傳值: 圖檔儲存總大小值 (單位 KB)
updateStorageSize
public void updateStorageSize($delta)
更新圖檔儲存總大小值。刪除圖檔或新增圖檔時,會有檔案大小的變動值 $delta,將此值更新到儲存的總大小值以確保符合目前的容量狀態。
參數:
$delta - 檔案大小變動值 (刪除檔案為負;新增檔案為正。單位 byte)
resolveThumbName
public mixed resolveThumbName($thumbPattern)
取得圖檔預覽圖之完整檔名。因為預覽圖可支援不同格式,因此無法一開始就得知完整檔名,而須透過此方法先行查詢。而後從系統中找出符合的完整檔名回傳。如果預覽圖檔不存在則會回傳 false。
參數:
$thumbPattern - 附加圖檔預覽圖檔主名稱 (通常是一串數字)
回傳值: 圖檔預覽圖之完整檔名 (一串數字s.XXX) / 圖檔不存在 (false)
預覽網頁:
關閉預覽