<?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. 并发系列(四)-----CAS

    一 简介 保证Java中的原子操做方式有两种方式  1 加锁(可以理解悲观锁机制)  2 CAS(可以理解为乐观锁机制)  CAS全称是Compare and Swap 即比较并替换.在JDK中许多地 ...

  2. css布局笔记(二)Flex

    flex Flex是"Flexible Box"的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可指定为Flex布局. .box{di ...

  3. fiddler和bugfree之间的联动(做伪请求、伪响应、并发、抓密码)

    青.取之于蓝,而青于蓝:冰.水为之,而寒于水 不积跬步,无以至千里;不积小流,无以成江海. 1解压Fiddler Web Debugger V4.6.2017修正中文第6版至C盘Program Fil ...

  4. Vue2.0原理-模板解析

    下面这段代码,vue内部做了什么操作?我去源码里面找找看 new Vue({ el: '#app' }) 入口 vue 的入口文件在 src/core/instance/index.js, 里面一进来 ...

  5. OpenGL学习笔记(6) 基础光照的计算方法

    这个笔记只是冯氏光照模型下漫反射光以及镜面光照的计算方式的笔记 基础光照 基础光照分为环境光,漫反射光,镜面光照 环境光 环境光是一个常量,表示在没有光源的情况下物体的光 漫反射光 漫反射光分量的计算 ...

  6. linux_connect_mysql

    原文来自 https://www.cnblogs.com/lywy510/p/3615710.html #include <stdio.h> #include <stdlib.h&g ...

  7. VGGnet——从TFrecords制作到网络训练

    作为一个小白中的小白,多折腾总是有好处的,看了入门书和往上一些教程,很多TF的教程都是从MNIST数据集入手教小白入TF的大门,都是直接import MNIST,然后直接构建网络,定义loss和opt ...

  8. windows下在idea用maven导入spark2.3.1源码并编译并运行示例

    一.前提 1.配置好maven:intellij idea maven配置及maven项目创建 2.下载好spark源码: 二.导入源码: 1.将下载的源码包spark-2.3.1.tgz解压(E:\ ...

  9. kubernetes高可用设计-CA,etcd

    环境准备: master01:192.168.150.128 master02:192.168.150.130 master03:192.168.150.131 node01:192.168.150. ...

  10. Dede织梦验证码不显示,织梦后台登陆验证码不显示解决方法

    关于"织梦验证码不显示"的解决方法 "织梦验证码无法显示出来"的问题分析? 1.之前显示正常,但是换了服务器后就不能够正常显示:(这种通常是网站程序经过迁移后所 ...