<?php
class File {
public function transByte($size) {
$arr = array ("B", "KB", "MB", "GB", "TB", "EB");
$i = 0;
while ($size >= 1024) {
$size /= 1024;
$i ++;
}
return round ($size, 2) . $arr [$i];
}
public function createFile($filename) {
$pattern = "/[\/,\*,<>,\?\|]/";
if (! preg_match ($pattern, basename ($filename))) {
if (! file_exists ($filename)) {
if (touch ($filename)) {
return "文件创建成功";
} else {
return "文件创建失败";
}
} else {
return "文件已存在,请重命名后创建";
}
} else {
return "非法文件名";
}
}
public function renameFile($oldname,$newname) {
if (checkFilename($newname)) {
$path = dirname($oldname);
if (!file_exists($path."/".$newname)) {
if (rename($oldname,$path."/".$newname)) {
return "重命名成功";
} else {
return "重命名失败";
}
} else {
return "存在同名文件,请重新命名";
}
} else {
return "非法文件名";
}
}
public function checkFilename($filename) {
$pattern = "/[\/,\*,<>,\?\|]/";
if (preg_match ($pattern, $filename)) {
return false;
} else {
return true;
}
}
public function delFile($filename) {
if (unlink($filename)) {
$mes = "文件删除成功";
} else {
$mes = "文件删除失败";
}
return $mes;
}
public function downFile($filename) {
header("content-disposition:attachment;filename=".basename($filename));
header("content-length:".filesize($filename));
readfile($filename);
}
public function downFile2($file_path) {
$file_path = iconv('utf-8', 'gb2312', $file_path);
if (!file_exists($file_path)) {
exit('文件不存在!');
}
$file_name = basename($file_path);
$file_size = filesize($file_path);
$fp = fopen($file_path, 'r');
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: {$file_size}");
header("Content-Disposition: attachment;filename={$file_name}");
$buffer = 1024;
$file_count = 0;
while (!feof($fp) && ($file_size-$file_count > 0)) {
$file_data = fread($fp, $buffer);
$file_count += $buffer;
echo $file_data;
}
fclose($fp);
}
public function copyFile($filename,$dstname) {
if (file_exists($dstname)) {
if (!file_exists($dstname."/".basename($filename))) {
if (copy($filename,$dstname."/".basename($filename))) {
$mes = "文件复制成功";
} else {
$mes = "文件复制失败";
}
} else {
$mes = "存在同名文件";
}
} else {
$mes = "目标目录不存在";
}
return $mes;
}
public function cutFile($filename,$dstname) {
if (file_exists($dstname)) {
if (!file_exists($dstname."/".basename($filename))) {
if (rename($filename,$dstname."/".basename($filename))) {
$mes = "文件剪切成功";
} else {
$mes = "文件剪切失败";
}
} else {
$mes = "存在同名文件";
}
} else {
$mes = "目标目录不存在";
}
return $mes;
}
public function uploadFile($fileInfo,$path,$allowExt = array("gif","jpeg","jpg","png","txt"),$maxSize = 10485760) {
if ($fileInfo['error'] == UPLOAD_ERR_OK) {
if (is_uploaded_file($fileInfo['tmp_name'])) {
$ext = getExt($fileInfo['name']);
$uniqid = getUniqidName();
$destination = $path."/".pathinfo($fileInfo['name'],PATHINFO_FILENAME)."_".$uniqid.".".$ext;
if (in_array($ext,$allowExt)) {
if ($fileInfo['size'] <= $maxSize) {
if (move_uploaded_file($fileInfo['tmp_name'], $destination)) {
$mes = "文件上传成功";
} else {
$mes = "文件移动失败";
}
} else {
$mes = "文件过大";
}
} else {
$mes = "非法文件类型";
}
} else {
$mes = "文件不是通过HTTP POST方式上传上来的";
}
} else {
switch ($fileInfo['error']) {
case 1:
$mes = "超过了配置文件的大小";
break;
case 2:
$mes = "超过了表单允许接收数据的大小";
break;
case 3:
$mes = "文件部分被上传";
break;
case 4:
$mes = "没有文件被上传";
break;
}
}
return $mes;
}
}