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.
}
?>
|
更多建议: