文件輔助函數(shù)
文件輔助函數(shù)文件包含若干對文件進(jìn)行操作的函數(shù)。
加載
使用以下代碼:
$this->load->helper('file');
加載后可用以下函數(shù):
read_file('path')
返回路徑為path的文件內(nèi)容。例:
$string = read_file('./path/to/file.php');
可以是相對或者絕對的服務(wù)器的路徑。如果函數(shù)執(zhí)行失敗則返回 FALSE(boolean類型)。
提示: 這里的路徑是相對于該站點(diǎn)的index.php所在的路徑,而不是當(dāng)前所在的控制器或視圖文件的路徑。這是因?yàn)镃odeIgniter使用的前端控制器(front controller)所以,所有的路徑永遠(yuǎn)都是相對于index.php所在路徑。
如果你的服務(wù)器打開了 open_basedir 限制,你可能無法通過上面的方法訪問一個(gè)文件。
write_file('path', $data)
寫進(jìn)數(shù)據(jù)到path所指向文件。如果文件不存在則創(chuàng)建之。例:
$data = 'Some file data';
if ( ! write_file('./path/to/file.php', $data))
{
???? echo 'Unable to write the file';
}
else
{
???? echo 'File written!';
}
你可以通過可選的第三個(gè)參數(shù)來設(shè)置文件的讀寫屬性:
write_file('./path/to/file.php', $data, 'r+');
默認(rèn)讀寫屬性是 wb。更多關(guān)于文件讀寫屬性參數(shù)的內(nèi)容請參考:PHP user guide。
注意:要使用此函數(shù)寫進(jìn)數(shù)據(jù),當(dāng)前用戶對此文件應(yīng)該是“可寫”的,如果該文件不存在則該用戶應(yīng)該對包含該文件的目錄有寫權(quán)限。(即*nux系統(tǒng)下的666,777等)。
提示: 這里的路徑是相對于該站點(diǎn)的index.php所在的路徑,而不是當(dāng)前所在的控制器或視圖文件的路徑。這是因?yàn)镃odeIgniter使用的前端控制器(front controller)所以,所有的路徑永遠(yuǎn)都是相對于index.php所在路徑。
delete_files('path')
刪除所有包含于path下的文件。例:
delete_files('./path/to/directory/');
如果第二個(gè)參數(shù)設(shè)為 true, 則所有在path下的文件夾也會(huì)被刪除掉。例:
delete_files('./path/to/directory/', TRUE);
提示: 要被刪除的文件必須是當(dāng)前系統(tǒng)用戶所有或者是當(dāng)前用戶對之具有寫權(quán)限。
get_filenames('path/to/directory/')
獲取path/to/directory目錄下所有文件名組成的數(shù)組。如果需要文件名中有其完整路徑則可以設(shè)置可選的第二個(gè)參數(shù)為TRUE。
get_dir_file_info('path/to/directory/', $top_level_only = TRUE)
獲取path/to/directory/目錄下的所有文件的文件名,文件大小,日期,文件權(quán)限等,并將這些內(nèi)容保存到返回的數(shù)組當(dāng)中。Sub-folders contained within the specified path are only read if forced by sending the second parameter, $top_level_only to FALSE, as this can be an intensive operation.
get_file_info('path/to/file', $file_information)
通過給定的路徑和文件名,獲取到文件path/to/file的文件名,文件大小,文件更改日期等。第二個(gè)參數(shù)允許你說明需要返回的信息,這個(gè)參數(shù)的選項(xiàng)包括'name', 'server_path', 'size', 'date', 'readable', 'writable', 'executable', 'fileperms'。如果文件不存在則返回FALSE。
注意: 參數(shù) "writable" 是使用PHP內(nèi)部的 is_writable() 函數(shù)來得到文件讀寫權(quán)限信息的,而這個(gè)函數(shù)在IIS服務(wù)器上存在眾所周知的問題。為此,可以考慮使用PHP內(nèi)部的另一個(gè)函數(shù)來替換,這個(gè)函數(shù)就是fileperms()。
get_mime_by_extension('file')
將文件后綴所代表的文件類型按照config/mimes.php里所指明的對應(yīng)類型進(jìn)行解釋。如果不能決定文件類型,或者不能打開mime配置文件則返回 FALSE。
$file = "somefile.png";
echo $file . ' is has a mime type of ' . get_mime_by_extension($file);
注意: 這并不是一個(gè)準(zhǔn)確判斷文件類型的方式,而僅僅是一種方便的判別方式。不應(yīng)當(dāng)在涉及安全問題時(shí)使用這種方式。
symbolic_permissions($perms)
將數(shù)字式的權(quán)限表示方式(如fileperms()函數(shù)所返回值)轉(zhuǎn)換成采用標(biāo)準(zhǔn)符號(hào)的標(biāo)示方式,例如:"33279"轉(zhuǎn)換成"-rwxrwxrwx")。
echo symbolic_permissions(fileperms('./index.php'));
// -rw-r--r--
octal_permissions($perms)
將數(shù)字式的權(quán)限表示方式(如fileperms()函數(shù)所返回值)轉(zhuǎn)換成采用三字符的八進(jìn)制的標(biāo)示方式,例如:"33279"轉(zhuǎn)換成"777")。
echo octal_permissions(fileperms('./index.php'));
// 644
?