文件工具

优质
小牛编辑
135浏览
2023-12-01

框架内置提供了一个文件上传类。herosphp\files\FileUpload. 直接使用就可以了


class UploadAction extends Controller {


    /**
     * 上传文件处理
     * @param HttpRequest $request
     */
    public function upload( HttpRequest $request ) {

        $config = array(
            "upload_dir" => RES_PATH."upload/".date('Y')."/".date('m'),
            //允许上传的文件类型
            'allow_ext' => 'jpg|jpeg|png|gif|txt|pdf|rar|zip|swf|bmp|c|java|mp3',
            //图片的最大宽度, 0没有限制
            'max_width' => 0,
            //图片的最大高度, 0没有限制
            'max_height' => 0,
            //文件的最大尺寸
            'max_size' =>  1024000,     /* 文件size的最大 1MB */
        );
        $upload = new FileUpload($config);
        $result = $upload->upload('src');
    }

}

创建文件上传实例的时候需要传入一个配置,可以配置文件上传目录,允许的文件类... 支持base64图片格式。

public function upload( $_field, $_base64 = false )

  • $_field : 上传表单文件域的 name 属性
  • $_base64 : 是否是base64编码的图片,默认为false

upload() 函数返回的值是一个包含了上传文件信息的数组,上传失败则会返回false.

返回数组的结构

keyvalue
file_type文件类型
local_name本地名称
file_size文件大小,单位:字节(B)
is_image是否图片
image_width图片宽度,如果不是图片,则为0
image_height图片高度,如果不是图片,则为0
file_path文件的绝对路径
file_name文件名称
file_ext文件后缀名
raw_name文件基本名称

下面贴出一个栗子

Array
(
    [file_type] => image/jpeg
    [local_name] => IMG_4336.JPG
    [file_size] => 6570353
    [is_image] => 1
    [image_width] => 5184
    [image_height] => 3456
    [file_path] => /php/herosphp/res/upload/2016/09/1472809551-776755.jpg
    [file_name] => 1472809551-776755.jpg
    [file_ext] => jpg
    [raw_name] => 1472809551-776755
)

你还可以通过调用 $upload->getUploadMessage() 来获取错误信息。

文件(夹)操作

文件操作的静态方法全部封装在 herosphp\files\FileUtils 工具类中了。

创建多级目录

FileUtils::makeFileDirs('/res/php/css/ddd');

获取文件后缀名

FileUtils::getFileExt('test/123.jpg');  //会默认转成小写

删除目录

递归删除

FileUtils::removeDirs($dir);
  • public static function copyDir( $src, $dst ); //拷贝文件夹
  • public static function isEmptyDir($dirName); //判断文件夹是否为空
  • public static function dirTraversal($dir); //遍历目录,返回目录文件相对路径
  • public static function formatFileSize($size); //获取格式化文件大小字符串

文件压缩

herosphp\files\PHPZip 提供了将文件夹打包成zip压缩文件的工具

压缩

$zip = new PHPZip();
if ( $zip->createZip('/php/xhlm', '/php/xhlm.zip') ) {
    echo '生成压缩文件成功!';
} else {
    echo '生成压缩文件失败!';
}

解压

$zip = new PHPZip();
if ( $zip->extractZip('/php/xhlm.zip', '/php/123') ) {
    echo('解压文件成功!');
} else {
    echo('解压文件失败!');
}