PHP-文件上传封装类
<?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-文件上传封装类的更多相关文章
- [转]利用 Commons-Fileupload 实现文件上传
转载 Java Web开发人员可以使用Apache文件上传组件来接收浏览器上传的文件,该组件由多个类共同组成,但是,对于使用该组件来编写文件上传功能的Java Web开发人员来说,只需要了解和使用其中 ...
- php部分---单文件上传的封装类
<?php $fileinfo=$_FILES["myfile"]; function uploadfile($fileinfo,$allowext=array('jpeg' ...
- springMVC文件上传(转)
原文链接: http://www.cnblogs.com/lonecloud/p/5989905.html 在Spring-mvc.xml注入bean 1 <!-- 配置文件上传,如果没有使用文 ...
- 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2 spring-mv ...
- tornado上传大文件以及多文件上传
tornado上传大文件问题解决方法 tornado默认上传限制为低于100M,但是由于需要上传大文件需求,网上很多说是用nginx,但我懒,同时不想在搞一个服务了. 解决方法: server = H ...
- 【Kindeditor编辑器】 文件上传、空间管理
包括图片上传.文件上传.Flash上传.多媒体上传.空间管理(图片空间.文件空间等等) 一.编辑器相关参数 二.简单的封装类 这里只是做了简单的封装,欢迎大家指点改正. public class Ki ...
- 【SSH网上商城项目实战13】Struts2实现文件上传功能
转自:https://blog.csdn.net/eson_15/article/details/51366384 上一节我们做完了添加和更新商品的功能,这两个部分里有涉及到商品图片的上传,并没有详细 ...
- SpringBoot | 第十七章:web应用开发之文件上传
前言 上一章节,我们讲解了利用模版引擎实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容jsp项目的解决方案.既然开始讲解web开发了,我们就接着继续往web这个方向继续吧.通常,我们在做we ...
- SpringBoot --web 应用开发之文件上传
原文出处: oKong 前言 上一章节,我们讲解了利用模版引擎实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容jsp项目的解决方案.既然开始讲解web开发了,我们就接着继续往web这个方向继 ...
- jquery.uploadify文件上传组件
1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...
随机推荐
- Java程序设计(2021春)——第五章输入输出笔记与思考
Java程序设计(2021春)--第五章输入输出笔记与思考 本章概览: 异常处理简介 程序运行时,环境.操作等可能出现各种错误.故障,我们希望程序具有容错能力,给出错误信息.面向对象的程序设计里有异常 ...
- new JSONObject 无异常卡顿【Maven+Idea 导包不更新的小坑】
问题描述 今天在使用JSONObject过程中出现了一个非常不可思议的现象,我Junit测试没有问题,但是就是打开服务器运行的时候,结果就是出不来,经过多次测试发现代码竟然卡在了new JSONObj ...
- Tomcat启动报错org.apache.catalina.core.StandardContext listenerStart
感谢原文作者:西北码农 原文链接:https://blog.csdn.net/bitree1/article/details/72236633 解决方法: 1.检查配置信息有无异常:如 web.xml ...
- position和anchorPoint笔记
position和anchorPoint是CAlayer的两个属性. 我们以前修改一个控件的位置都是能过Frame的方式进行修改. 现在利用CALayer的position和ancho ...
- NSTimer的使用
开启定时器 @property (nonatomic, weak) NSTimer *timer; // 返回一个自动开始执行任务的定时器 self.timer = [NSTimer schedule ...
- fiddler模拟2
在解决日常的支持需求中,经常会遇到一些用户反馈一些无法简单复现的bug,有很大一部分的bug是由于用户自身的网络环境波动,或者是本身网络环境就较为恶劣,而服务在面对这种恶劣的网络环境的健壮性不够,导致 ...
- C# 不区分大小写替换文本
C# .NET类库自带的str.Replace() 方法替换文本不能区分大小写.我们可以自己编写一个扩展方法,支持文本忽略大小写替换.以下扩展方法实现了使用正则表达式忽略大小写替换文本. public ...
- CVE-2021-33739 EOP漏洞分析
背景 CVE-2021-33739是一个UAF漏洞,成因是由于在对象CInteractionTrackerBindingManagerMarshaler与对象CInteractionTracker ...
- MYSQL优化的一些性能与技巧
1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一 ...
- Ubuntu20重装nvidia驱动
终端:nvidia-smi 查看驱动信息 错误:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver ...