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. } ?>