Joomla的文件系統(tǒng)提供了對常規(guī)文件操作的封裝,主要由4個類 JFile,JFolder,JPath,JArchive來實現(xiàn)。本文主要講解JFile類的一些常用文件操作
得到文件擴展名
代碼:
$filename = "zmax.txt";
$ext = JFile::getExt($filename); //$ext="txt";
|
過濾文件擴展名
代碼:
$filename = "zmax.txt";
$name = JFile::stripExt($filename); //$name="zmax";
|
清理文件名
代碼:
$safefilename = File::makeSafe($filename);
|
這個函數(shù)會過濾掉文件名中不合法的字符(odd characters),返回一個安全的文件名
讀取文件內(nèi)容
代碼:
$filepath = JPATH_ROOT."/test.txt";
$content = JFile::read($filepath);
|
文件的路徑為絕對路徑或者相對index.php的相對路徑
寫入文件(清空模式)
代碼:
$filepath = JPATH_ROOT."/test.txt";
JFile::write($filepath,"I ma zmax");
|
這個函數(shù)會清空文件原有的內(nèi)容。如果需要追加內(nèi)容請使用append方法
寫入文件(追加模式)
代碼:
$filepath = JPATH_ROOT."/test.txt";
JFile::append($filepath,"I ma zmax");
|
原先的內(nèi)容會保留,新的內(nèi)容寫在文件的末尾
復制文件
代碼:
JFile::copy($src, $dest);
|
這個函數(shù)的實現(xiàn)是對PHP 的copy()函數(shù)的封裝,增加了對源文件是否存在,目標路徑是否可用的檢查。本方法支持FTP層操作
刪除文件
代碼:
JFile::delete($filefullpath);
|
這個函數(shù)在刪除的時候會首先檢查文件是否存在,如果不存在則刪除失敗。同時在刪除的時候會進行權(quán)限檢查,如果權(quán)限不正確,會嘗試更改權(quán)限。本方法支持FTP層操作
上傳文件
JFile::upload($src, $dest);
|
這個函數(shù)是對PHP的 move_uploaded_file() 封裝,在上傳前會檢查路徑和權(quán)限是否正確。
示范代碼
本代碼演示了如何上傳一個文件
前臺界面:
<form name="upload" action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file_upload" />
<input type="submit" />
</form>
|
說明: 創(chuàng)建表單,選擇上傳文件的,點擊提交后,會進入到后臺的upload.php中處理代碼邏輯。為了確保上傳文件成功,比如在form元素中指定 enctype="multipart/form-data"
后臺上傳邏輯:
<?php
// 獲得提交的文件內(nèi)容
$file = JFactory::getApplication()->input->files->get('file_upload');
// 導入文件操作庫文件
jimport('joomla.filesystem.file');
// 過濾文件名
$filename = JFile::makeSafe($file['name']);
// 得到源文件和目標文件的地址
$src = $file['tmp_name'];
$dest = JPATH_COMPONENT . DS . "uploads" . DS . $filename;
// 檢查后綴,只允許上傳jpg
if (strtolower(JFile::getExt($filename)) == 'jpg')
{
// TODO: 安全檢查的代碼.
if (JFile::upload($src, $dest))
{
// Redirect to a page of your choice.
}
else
{
// Redirect and throw an error message.
}
}
else
{
// Redirect and notify user file does not have right extension.
}
?>
|
更多建議: