<?php
$file = $_FILES['img']; $obj = new File();
$res = $obj->upload($file,'upload');
if($res){
echo $res;
}else{
echo File::$error;
} //sleep(30); //Array ( [name] => wjdk.png [type] => image/png [tmp_name] => C:\Windows\php955D.tmp [error] => 0 [size] => 668730 ) class File{ //设置属性:保存允许上传的Mime类型
private static $types = array('image/jpg','imgae/jpeg','image/pjpeg','image/png'); //修改允许上传的文件类型
public static function setType($type=array()){
if(!empty($type)){
self::$types = $type;
}
}
public static $error;
//记录文件上传过程中出现的错误 //上传方法 public static function upload($file,$path,$max = 2000000){
//判断文件有效性
if(!isset($file['error']) || count($file) != 5){
self::$error = '错误的上传文件';
return false;
}
if(!is_dir($path)){
self::$error = '文件路径不存在';
return false;
}
//判定文件是否正确上传
switch ($file['error']){
case 1:
case 2:
self::$error = '文件超过服务器允许大小';
return false;
case 3:
self::$error = '文件只有部分被上传';
return false;
case 4:
self::$error = '没有选中要上传的文件';
return false;
case 6:
self::$error = '找不到临时文件夹';
return false;
case 7:
self::$error = '文件写入失败';
return false;
}
//判定文件类型
if(!in_array($file['type'],self::$types)){
self::$error = '当前上传的文件类型不允许';
return false;
} //判断文件大小
if($file['size'] > $max){
self::$error = '当前上传的文件超过允许的大小,当前允许的大小为'.string()($max/1024/1024).'M';
return false;
} $filename = self::getRandomName($file['name']); if(move_uploaded_file($file['tmp_name'],$path.'/'.$filename)){
return $filename;
}else{
self::$error = '文件移动失败';
return false;
}
} public static function getRandomName($filename,$prefix = 'image'){
$ext = strrchr($filename,'.');
$new_name = $prefix.date('YmdHis');
for($i=0;$i<6;$i++){
$new_name .= chr(mt_rand(65,90));
}
return $new_name.$ext; }
}

PHP-文件上传封装类的更多相关文章

  1. [转]利用 Commons-Fileupload 实现文件上传

    转载 Java Web开发人员可以使用Apache文件上传组件来接收浏览器上传的文件,该组件由多个类共同组成,但是,对于使用该组件来编写文件上传功能的Java Web开发人员来说,只需要了解和使用其中 ...

  2. php部分---单文件上传的封装类

    <?php $fileinfo=$_FILES["myfile"]; function uploadfile($fileinfo,$allowext=array('jpeg' ...

  3. springMVC文件上传(转)

    原文链接: http://www.cnblogs.com/lonecloud/p/5989905.html 在Spring-mvc.xml注入bean 1 <!-- 配置文件上传,如果没有使用文 ...

  4. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

     1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mv ...

  5. tornado上传大文件以及多文件上传

    tornado上传大文件问题解决方法 tornado默认上传限制为低于100M,但是由于需要上传大文件需求,网上很多说是用nginx,但我懒,同时不想在搞一个服务了. 解决方法: server = H ...

  6. 【Kindeditor编辑器】 文件上传、空间管理

    包括图片上传.文件上传.Flash上传.多媒体上传.空间管理(图片空间.文件空间等等) 一.编辑器相关参数 二.简单的封装类 这里只是做了简单的封装,欢迎大家指点改正. public class Ki ...

  7. 【SSH网上商城项目实战13】Struts2实现文件上传功能

    转自:https://blog.csdn.net/eson_15/article/details/51366384 上一节我们做完了添加和更新商品的功能,这两个部分里有涉及到商品图片的上传,并没有详细 ...

  8. SpringBoot | 第十七章:web应用开发之文件上传

    前言 上一章节,我们讲解了利用模版引擎实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容jsp项目的解决方案.既然开始讲解web开发了,我们就接着继续往web这个方向继续吧.通常,我们在做we ...

  9. SpringBoot --web 应用开发之文件上传

    原文出处: oKong 前言 上一章节,我们讲解了利用模版引擎实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容jsp项目的解决方案.既然开始讲解web开发了,我们就接着继续往web这个方向继 ...

  10. jquery.uploadify文件上传组件

    1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...

随机推荐

  1. freeswitch插件式模块接口实现方式

    概述 freeswitch的外围模块是插件式的,可以动态的加载和卸载,使用起来非常的灵活和方便. 如果我们自己来设计一个开源的代码框架,相信这种插件式的模块结构是非常适合多人合作的模式. 本文对fs的 ...

  2. ARP协议工作原理

    转载请注明来源:https://www.cnblogs.com/hookjc/ ARP数据包根据接收对象不同,可分为两种:    1. 广播包(Broadcast).广播包目的MAC地址为FF-FF- ...

  3. 总结haproxy各调度算法的实现方式及其应用场景

    一.静态算法 1.1 static-rr 基于权重的轮询调度,不支持运行时利用socat进行权重的动态调整(只支持0和1,不支持其它值)及后端服务器慢启动,其后端主机数量没有限制,相当于LVS中的 w ...

  4. nginx中的模块分类及常见核心模块有哪些

    1.模块分类 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 .配置文件解析 .事件驱动机制 .进程管理等核心功能 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如 ...

  5. Git重命名远程分支

    一.重命名本地分支 将hot_fix分支重命名为bug_fix git branch -m hot_fix bug_fix 二.推送重命名后的本地分支到远程仓库 git push origin bug ...

  6. SpringMVC5中,@ModelAttribute注解详解

    看这个注解的前提最好熟悉一下SpringMVC的model组件,该注解可以有五种使用方式: ①②③为 @ModelAttribute 跟@RequestMapping 分开修饰方法,被@ModelAt ...

  7. 动静分离+url地址重定向+HTTPS协议

    动静分离+url地址重定向+HTTPS协议

  8. 文本处理命令(sort+uniq+cut+tr+wc)+三剑客之sed

    目录 文本处理命令+三剑客之sed 一.文本处理命令 1.排序命令 sort 2.检查/删除命令 uniq 3. cut 显示特定部分命令 4. 替换或删除命令 tr 5.统计 计算数字命令 wc 二 ...

  9. Session是什么?它与Cookie有什么区别?

    你好,是我琉忆. 今天我们讲一讲Session与Cookie的区别 1.Session对象 上一节简单介绍了Cookie,接下来简单介绍Session.Session和Cookie都是会话管理技术的一 ...

  10. 痞子衡嵌入式:介绍i.MXRT定时器PIT的多通道链接模式及其在coremark测试工程里的应用

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT定时器PIT的多通道链接模式及其在coremark测试里的应用. 早在 2018 年 i.MXRT 系列跨界处理器刚推出的时 ...