ctms/vendor/fmsoft/function/file.func.php
2025-04-10 23:19:13 +08:00

253 lines
5.5 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* @author Fm453
* @site www.hiluker.com
* @remark文件处理
*/
defined('HI_FM') or exit("Access Denied");
global $_GPC;
global $_HI;
global $_FM;
fm_load()->fm_func('fm');
$_HI['setting']['filemode'] = 0777; //该数字不可加引号
//判断文件是否存在
/*
@filename 文件名
@route 相对于yii安装根目录的路径
*/
function fmFunc_file_checkExist($filename,$route)
{
global $_FM;
$file = $route.$filename;
$file = FM_YII_ROOT.$file;
if(file_exists($file)){
return true;
}
return false;
}
//创建目录
/*
@path 文件目录
*/
function fmFunc_file_mkdirs($path)
{
if (!is_dir($path)) {
fmFunc_file_mkdirs(dirname($path));
mkdir($path);
}
return is_dir($path);
}
//写文件
/*
@filename 文件名
@data 要写入的数据
*/
function fmFunc_file_write($filename,$data)
{
global $_GPC;
global $_HI;
global $_FM;
fmFunc_file_mkdirs(dirname($filename));
file_put_contents($filename, $data);
@chmod($filename, $_HI['setting']['filemode']);
return is_file($filename);
}
//读文件
/*
@filename 完整文件名
*/
function fmFunc_file_read($filename)
{
global $_FM;
$filename = FM_YII_ROOT.$filename;
if (!is_file($filename)) {
return false;
}
return file_get_contents($filename);
}
//移动文件
/*
@filename 完整文件名
@destination 要移入的目标路径
*/
function fmFunc_file_move($filename,$destination)
{
global $_GPC;
global $_HI;
global $_FM;
$filename = FM_YII_ROOT.$filename;
fmFunc_file_mkdirs(dirname($dest));
if (is_uploaded_file($filename)) {
move_uploaded_file($filename, $dest);
} else {
rename($filename, $destination);
}
@chmod($filename, $_HI['setting']['filemode']);
return is_file($destination);
}
//复制文件
/*
@src 源文件(要被复制的文件)
@des 目标文件
@filter 过滤器
*/
function fmFunc_file_copy($src, $des, $filter)
{
global $_FM;
$dir = opendir($src);
@mkdir($des);
while (false !== ($file = readdir($dir))) {
if (($file != '.') && ($file != '..')) {
if (is_dir($src . '/' . $file)) {
fmFunc_file_copy($src . '/' . $file, $des . '/' . $file, $filter);
} elseif (!in_array(substr($file, strrpos($file, '.') + 1), $filter)) {
copy($src . '/' . $file, $des . '/' . $file);
}
}
}
closedir($dir);
}
//删除目录
/*
@path 文件目录
@clean 是否清空
*/
function fmFunc_file_rmdirs($path, $clean = false)
{
if (!is_dir($path)) {
return false;
}
$files = glob($path . '/*');
if ($files) {
foreach ($files as $file) {
is_dir($file) ? fmFunc_file_rmdirs($file) : @unlink($file);
}
}
return $clean ? true : @fmFunc_file_rmdir($path);
}
//删除指定文件(永久删除)
/*
@file 文件名(含路径)
*/
function fmFunc_file_delete($file) {
if (empty($file)) {
return FALSE;
}
if (file_exists($file)) {
@unlink($file);
}
if (file_exists(FM_YII_ROOT . '/' . $file)) {
@unlink(FM_YII_ROOT . '/' . $file);
}
return TRUE;
}
//列出目录树
/*
@path 文件目录
@include 文件名中包含的某些特定元素
*/
function fmFunc_file_tree($path, $include = array()) {
$files = array();
if (!empty($include)) {
$ds = glob($path . '/{' . implode(',', $include) . '}', GLOB_BRACE);
} else {
$ds = glob($path . '/*');
}
if (is_array($ds)) {
foreach ($ds as $entry) {
if (is_file($entry)) {
$files[] = $entry;
}
if (is_dir($entry)) {
$rs = fmFunc_file_tree($entry);
foreach ($rs as $f) {
$files[] = $f;
}
}
}
}
return $files;
}
//文件随机命名
/*
@dir 文件目录
@ext 文件扩展名
*/
function fmFunc_file_randomName($dir, $ext) {
do {
$filename = random(32) . '.' . $ext;
} while (file_exists($dir . $filename));
return $filename;
}
/*______________________________________数据文件类操作______________________________*/
//写数据文件(data目录)
/*
@filename PHP文件名
@route 相对于数据根目录data的路径
@data 要写入的数据
*/
function fmFunc_file_dataWrite($filename,$data,$uri=null,$origin_cache_key=null)
{
global $_FM;
$filelink = 'data/';
$file = $filelink.$filename;
$file = FM_YII_ROOT.$file;
$file = $file.'.php';
// 在数据目录中添加一个文件并写入内容信息
$content = "<?php";
$content .= "\r\n";
$content .= "/*";
$content .= "\r\n";
if($uri) {
$content .= "* @url 请求源:".$uri;
$content .= "\r\n";
}
if($origin_cache_key) {
$content .= "* @key 关联键:".$origin_cache_key;
$content .= "\r\n";
$content .= "* @checkmd5 文件名校验:".md5($origin_cache_key);
$content .= "\r\n";
}
$content .= "*/";
$content .= "\r\n";
$content .= "\$FmApiDataCache = '';";
$content .= "\r\n";
$content .= "\$FmApiDataCache = ";
$content .= "'".$data."'"; //写入前已经进行序列化操作,以便能存储各种类型的数据
$content .= ";";
fmFunc_file_write($file,$content);
}
function fmFunc_file_dataLoad($filename)
{
global $_FM;
$filelink = 'data/';
$file = $filelink.$filename;
$file = FM_YII_ROOT.$file;
require $file;;
$data = htmlspecialchars(iunserializer($FmApiDataCache));
return $data;
}