文件工具
优质
小牛编辑
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.
返回数组的结构
key | value |
---|---|
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('解压文件失败!');
}