文件管理IO接口概述:
- 提供了文件管理相关操作的IO接口。
- 包括文件的地址和内容的获取,目录创建,内容设置,下载,删除,重命名,复制及剪切等操作。
文件操作接口:
文件流地址获取:
- 获取文件流地址:使用
IO::getStream($path)
方法,返回文件流地址。
/* 获取文件流地址
*@parame $path
文件的地址(DzzPath)*@return
文件流地址*/
IO::getStream($path);
注意事项:
- 对于本地的文件会调用文件的绝对地址,防止文件被服务器解析;
- 返回的地址可以直接用于php的文件读取函数如fopen、file_get_contents等;
- 可以使用URL地址方式来调用:
如:index.php?mod=io&op=getStream&path=ODA3OXJyRkFsM3Q1ZzlGWXVRYXREWGhGOEQyOWpYcE9QK1hqL1c1WWhEOElPWVJ3ZmtrNm1EOA==
此处path的值为dzzencode($path)的值
文件URI地址获取:
- 获取文件URI地址:使用
IO::getFileUri($path)
方法,返回文件地址。
/* 获取文件URI地址
*@parame $path 文件的地址(DzzPath)
*@return 文件地址
*/
IO::getFileUri($path);
注意事项:
- 对于FTP文件,为了安全地址中没有包含ftp帐号和密码,只有对于匿名的ftp起作用;
- 返回的地址是文件的http地址(有些类型的文件可能会被解析),可以直接用于php的文件读取函数如fopen、file_get_contents等;
文件缩略图生成:
- 获取文件缩略图:使用
IO::getThumb($path, $width, $height, $original, $returnurl, $thumbtype)
方法,返回缩略图或缩略图路径。
/* 获取文件缩略图
*@parame $path 文件的地址(DzzPath)
*@parame $width 缩略图宽度
*@parame $height 缩略图高度
*@parame $original 是否调用原图,调用原图时,宽度和高度参数忽略
*@parame $returnurl 是否返回图片路径
*@parame $thumbtype 生成缩略图方式,1等比例生成,2剪裁生成
*@return 缩略图
*/
IO::getThumb($path,$width,$height,$original=false,$returnurl=false,$thumbtype=1);
注意事项:
- 当文件的原始高度或宽度小于给定的宽度或高度时,直接调用原图;
- 生成的缩略图会缓存在服务器./data/attachment/imgcache/下,下次调用会直接使用,可以通过计划任务定期清理。
- 可以通过URL地址方式来获取缩略图:index.php?mod=io&op=thumbnail&width=256&height=256&path=MGUzNXNOeWMxT1ZZbk9KTnp1VlJKWkhqZTNWT3hESlp5a2MwUk1PMnJscEg= 其中path的值为dzzencode($path)的值;
文件信息获取:
- 获取文件信息:使用
IO::getMeta($path)
方法,返回文件信息数组,包括文件名称、大小、类型等。
/* 获取文件信息
*@parame $path 文件的地址(DzzPath)
*@return 文件信息数组(文件名称、大小、类型等信息)
*/
IO::getMeta($path);
文件内容获取:
- 获取文件内容:使用
IO::getFileContent($path)
方法,返回文件内容。
/* 获取文件内容
*@parame $path 文件的地址(DzzPath)
*@return 文件内容
*/
IO::getFileContent($path);
创建目录
- 创建目录:使用
IO::CreateFolder($path, $fname, $perm, $params, $ondup)
方法,返回目录信息数组。
/* 创建目录
*@parame $path 文件位置(DzzPath)
*@parame $fname 目录名称
*@parame $perm 目录权限
*@parame $params 额外参数控制
*@parame $ondup 创建方式,默认新建,如果参数值为overwrite将会覆盖同名
*@return 目录的信息数组
*/
IO::CreateFolder($path,$fname,$perm=0,$params=array(),$ondup='newcopy');
注意事项:
$path 如果为空或为0时,将自动创建该目录为顶级目录
$params参数包含目录创建默认项设置的控制(即folder表固有项),也可自定义目录属性信息(即不包含在folder表的相关项,将在folder_attr表存储)。
设置文件内容
- 设置文件内容:使用
IO::setFileContent($path, $fileContent, $force, $nocover)
方法,返回文件信息数组。
/* 设置文件内容
*@parame $path 文件的地址(DzzPath)
*@parame $fileContent 文件的内容
*@parame $force 强制保存,忽略权限
*@parame $nocover 是否覆盖,默认不覆盖(此参数目前暂不支持除本地存储之外的其它云)
*@return 文件信息数组
*/
IO::setFileContent($path,$fileContent,$force=false,$nocover=true);
注意事项:
如果为本地存储,支持覆盖控制,其它云暂不支持(其它云暂执行覆盖当前文件内容操作)。
当为本地存储时:
如果$nocover参数为true,即不覆盖保存时,默认保存当前内容为新版本。逻辑处理如下:
1.若系统版本数已达到上限,即系统版本数量设置数(包含不开启版本和版本数量达到或超出版本数限制),该操作将移除当前操作文件最老版本,并保存当前内容为最新版本(如未开启版本,等同覆盖当前文件);
2.若版本数未达到系统版本数设置上限,包含版本开启并且版本数设置为0(即不限制版本数量),或当前文件版本小于最大版本数,该操作将保存当前内容为操作文件最新版本。
如果$nocover参数为false,执行覆盖保存,有版本时将自动覆盖文件最新版本内容,无版本时直接覆盖当前文件内容。
下载文件内容
- 下载文件内容:使用
IO::download($path, $filename)
方法,保存文件到指定名称。
/* 下载文件内容
*@parame $path 文件的地址(DzzPath)
*@parame $filename 保存的文件名称
*/
IO::download($path,$filename='');
注意事项:
- 当$path的类型为目录时,会将整个目录打包成zip下载;
- 可以通过下面的链接方式来下载:index.php?mod=io&op=download&path=MGUzNXNOeWMxT1ZZbk9KTnp1VlJKWkhqZTNWT3hESlp5a2MwUk1PMnJscEg=&filename=1.png,path的值为dzzencode($path)的值;
文件删除
- 文件删除:使用
IO::Delete($path, $force)
方法,返回包含文件名和文件icoid的数组。
/* 文件删除
*@parame $path 文件的地址(DzzPath)
*@parame $force 彻底删除,不放入回收站
*@return 数组(文件名和文件icoid)
*/
IO::Delete($path,$force=false);
文件重命名
- 文件重命名:使用
IO::rename($path, $text)
方法,返回文件相关信息数组。
/* 文件重命名
*@parame $path 文件的地址(DzzPath)
*@parame $text 新文件名
*@return 数组(文件相关信息)
*/
IO::rename($path,$text);
文件拷贝
- 文件拷贝:使用
IO::CopyTo($opath, $path, $iscopy)
方法,返回文件相关信息数组。
/* 文件拷贝
*@parame $opath 被移动的文件路径(DzzPath)
*@parame $path 目标位置
*@parame $iscopy 是否是复制,默认0,如果值为1为复制,否则为剪切
*@return 数组(文件相关信息)
*/
IO::CopyTo($opath,$path,$iscopy=0);
注意事项:
- 如果操作对象为目录,不能向其下级移动
- 当操作本地文件移动本地其它位置时,遵循以下处理:
(1)如果为复制
a.如果复制文件源文件位置与目标位置相同,生成副本,否则新建
b.如果复制文件在目标位置有同名文件,生成副本,否则新建
c.如果复制文件为目录,且目标位置有同名目录,且源文件位置不与目标位置相同,则将源文件目录中文件放入目标位置同名目录中,否则新建
(2)如果为剪切
a.如果复制文件有重名,则生成新的文件名创建,否则,直接创建,并删除源文件
b.如果复制文件为目录,且目标位置有同名目录,则移动源文件目录其下文件至目标位置下同名目录,否则则创建
上传文件
- 上传文件:使用
IO::upload($fileContent, $path, $filename)
方法,上传文件到指定位置。
/* 上传文件
//$fileContent:源文件数据;
//$container:目标位置;
//$path:对应路径;
IO::upload($fileContent,$path,$filename)
过滤文件名
- 过滤文件名:使用
IO::name_filter($name)
方法,返回过滤后的文件名字符串。
/* 过滤文件名
*@parame $name 文件名
*@return 字符串,过率的文件名
*/
IO::name_filter($name)
注意事项:
为保证程序正确稳定运行,对用户输入的文件名须过滤处理