Joomla的文件系统提供了对常规文件操作的封装,主要由4个类 JFile,JFolder,JPath,JArchive来实现。本文主要讲解JFile类的一些常用文件操作 

得到文件扩展名


代码:

$filename = "zmax.txt";
$ext = JFile::getExt($filename); //$ext="txt";

过滤文件扩展名


代码:

$filename = "zmax.txt";
$name = JFile::stripExt($filename); //$name="zmax";

清理文件名


代码:

$safefilename = File::makeSafe($filename);

 这个函数会过滤掉文件名中不合法的字符(odd characters),返回一个安全的文件名

读取文件内容


代码:

$filepath = JPATH_ROOT."/test.txt";
$content = JFile::read($filepath);

文件的路径为绝对路径或者相对index.php的相对路径

写入文件(清空模式)


代码:

$filepath = JPATH_ROOT."/test.txt";
JFile::write($filepath,"I ma zmax");

这个函数会清空文件原有的内容。如果需要追加内容请使用append方法

写入文件(追加模式)


代码:

$filepath = JPATH_ROOT."/test.txt";
JFile::append($filepath,"I ma zmax");

原先的内容会保留,新的内容写在文件的末尾

复制文件


代码:

JFile::copy($src, $dest);

这个函数的实现是对PHP 的copy()函数的封装,增加了对源文件是否存在,目标路径是否可用的检查。本方法支持FTP层操作

删除文件


代码:

JFile::delete($filefullpath);

这个函数在删除的时候会首先检查文件是否存在,如果不存在则删除失败。同时在删除的时候会进行权限检查,如果权限不正确,会尝试更改权限。本方法支持FTP层操作 

上传文件


JFile::upload($src, $dest);

这个函数是对PHP的 move_uploaded_file() 封装,在上传前会检查路径和权限是否正确。

示范代码


本代码演示了如何上传一个文件

前台界面:

<form name="upload" action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file_upload" />
<input type="submit" />
</form>

说明: 创建表单,选择上传文件的,点击提交后,会进入到后台的upload.php中处理代码逻辑。为了确保上传文件成功,比如在form元素中指定 enctype="multipart/form-data"

 后台上传逻辑:

<?php
// 获得提交的文件内容
$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.
}
?>