<?php 

//Bytes/Kb/MB/GB/TB/EB
/**
* 转换字节大小
* @param number $size
* @return number
*/
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];
} /**
* 创建文件
* @param string $filename
* @return string
*/
function createFile($filename) {
//file/1.txt
//验证文件名的合法性,是否包含/,*,<>,?,|
$pattern = "/[\/,\*,<>,\?\|]/";
if (! preg_match ( $pattern, basename ( $filename ) )) {
//检测当前目录下是否存在同名文件
if (! file_exists ( $filename )) {
//通过touch($filename)来创建
if (touch ( $filename )) {
return "文件创建成功";
} else {
return "文件创建失败";
}
} else {
return "文件已存在,请重命名后创建";
}
} else {
return "非法文件名";
}
} /**
* 重命名文件
* @param string $oldname
* @param string $newname
* @return string
*/
function renameFile($oldname,$newname){
// echo $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 "非法文件名";
} } /**
*检测文件名是否合法
* @param string $filename
* @return boolean
*/
function checkFilename($filename){
$pattern = "/[\/,\*,<>,\?\|]/";
if (preg_match ( $pattern, $filename )) {
return false;
}else{
return true;
}
} /**
* 删除文件
* @param string $filename
* @return string
*/
function delFile($filename){
if(unlink($filename)){
$mes="文件删除成功";
}else{
$mes="文件删除失败";
}
return $mes;
} /**
* 下载文件操作
* @param string $filename
*/
function downFile($filename){
header("content-disposition:attachment;filename=".basename($filename));
header("content-length:".filesize($filename));
readfile($filename);
} /**
* 复制文件
* @param string $filename
* @param string $dstname
* @return string
*/
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;
} 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;
} /**
* 上传文件
* @param array $fileInfo
* @param string $path
* @param array $allowExt
* @param int $maxSize
* @return string
*/
function uploadFile($fileInfo,$path,$allowExt=array("gif","jpeg","jpg","png","txt"),$maxSize=10485760){
//判断错误号
if($fileInfo['error']==UPLOAD_ERR_OK){
//文件是否是通过HTTP POST方式上传上来的
if(is_uploaded_file($fileInfo['tmp_name'])){
//上传文件的文件名,只允许上传jpeg|jpg、png、gif、txt的文件
//$allowExt=array("gif","jpeg","jpg","png","txt");
$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; }

php 关于文件的一些封装好的函数的更多相关文章

  1. PHP实现单文件、多文件上传 封装 面向对象实现文件上传

    文件上传配置 客户端配置 1.表单页面 2.表单的发送方式为post 3.添加enctype = "multipart/form-data" <form action=&qu ...

  2. js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用)

    js进阶ajax函数封装(匿名函数作为参数传递)(封装函数引入文件的方式非常好用) 一.总结 2.匿名函数作为参数传递 二.js进阶ajax函数封装 ajax1.js function ajax(ur ...

  3. 通过node指令自动创建一个package.json文件,并封装发布使用

    通过node指令自动创建一个package.json文件,并封装发布使用:https://blog.csdn.net/scu_cindy/article/details/78208268

  4. ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及abp封装的Javascript函数库

    经过前几节,我们已经解决数据库,模型,DTO,控制器和注入等问题.那么再来看一下登录逻辑.这里算是前面几节的一个初次试水. 首先我们数据库已经有的相应的数据. 模型和DTO已经建好,所以我们直接在服务 ...

  5. Thinkphp3.2.3框架下封装公共的函数,例如封装CURL函数来获取接口数据

    当我们需要在控制层调用相同的封装函数时,写多次相同的函数,显得代码十分的拉杂,不精简: TP框架有一个很好的机制,可以再Common定义一个function.php函数,当我们在控制层调用的时候直接调 ...

  6. ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及几种abp封装的Javascript函数库

    返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期         简介 经过前几节,我们已经解决数据库,模型,DTO,控制器和注入等问题.那么再来看一下登录逻辑.这 ...

  7. JavaScript封装Ajax工具函数及jQuery中的ajax,xhr在IE的兼容

    封装ajax工具函数 首先要思考:1.为什么要封装它?提高开发效率2.把一些不确定的情况考虑在其中 a. 请求方式 b. 请求地址 c. 是否异步 d. 发送参数 e. 成功处理 f. 失败处理3.确 ...

  8. ajax实现注册用户名时动态显示用户名是否已经被注册(1、ajax可以实现我们常见的注册用户名动态判断)(2、jquery里面的ajax也是类似我们这样封装了的函数)

    ajax实现注册用户名时动态显示用户名是否已经被注册(1.ajax可以实现我们常见的注册用户名动态判断)(2.jquery里面的ajax也是类似我们这样封装了的函数) 一.总结 1.ajax可以实现我 ...

  9. 采坑复盘:logging日志能用封装后的函数来打日志,发现filename一直显示封装logging函数的方法所在的文件名

    问题: logging日志能用封装后的函数来打日志,发现filename一直显示封装logging函数的方法所在的文件名 原因: logging记录的是第一个函数执行所在的文件,那用封装的函数,首先执 ...

随机推荐

  1. charles抓包https/模拟弱网/设置断点重定向/压测

    charles几个常用功能   1,ios 抓包https网页:(如未配置,会显示unknown) 第一步是:给手机安装SSL证书 手机和电脑在同一wifi下,手机wifi配置http代理,ip是电脑 ...

  2. 判断浏览器是chrome,Opera,Safari,Mac

    function(){ return { isSafari: (navigator.userAgent.indexOf('Safari')>=0 || navigator.userAgent.i ...

  3. HTML中的map和area标签

    1. 标签介绍: (1)map标签: 该标签是指图片的映射,也就是说一张可以点击的图片的映射: 属性介绍: <1> id: <img>中的 usemap 属性可引用 <m ...

  4. 0.0 配置JAVA环境和Maven环境(W10注意点)

    今天上班第一天,真有些忘了之前配置的环境问题,全新的电脑开始配置. 电脑软件JDK以及eclipse都是下载最新的 添加最全的链接吧: 1.JDK配置链接:http://www.cnblogs.com ...

  5. 2.深入解析数据类型与变量——《Excel VBA 程序开发自学宝典》

    2.1 数据类型 数据类型 所占字节 Byte 1 Boolean 2 Integer 2 Long 4 Single 4 Double 8 Currency 8 Decimal 14 Date 8 ...

  6. Linux 文件系统 -- 文件权限简介

    一.文件权限 使用 ls -l 命令可以查看文件的具体属性: 如图所示,第一列所示告诉了用户一个文件的类型和权限信息: 1)第一个字符 "d",表明该文件是一个目录文件: 2)r ...

  7. 从零开始的Python学习 知识补充sorted

    sorted()方法 sorted()可用于任何一个可迭代对象. 原型为sorted(iterable, cmp=None, key=None, reverse=False) iterable:一个可 ...

  8. Inception——Going deeper with convolutions

    1. 摘要 作者提出了一个代号为 Inception 的卷积神经网络架构,这也是作者在 2014 年 ImageNet 大规模视觉识别挑战赛中用于分类和检测的新技术. 通过精心的设计,该架构提高了网络 ...

  9. IOS git 删除仓库 新建仓库 提交 合并 操作 码云

    HDHaoShaoPengdeiMac:~ hdhaoshaopeng$ defaults write com.apple.finder AppleShowAllFiles TRUE HDHaoSha ...

  10. [shell] 脚本之shift和getopts (转载)

    转载地址:http://www.361way.com/shell-shift-getopts/4973.html 建议不熟悉getopts的朋友,此篇要看完,getopts部分内容在原作者上面有改动. ...