跟着百度学PHP[13]-文件处理 文件后缀验证、设置随机文件名....
目录:
文件的处理:00x1 判断错误
文件的处理:00x2 判断类型
文件的处理:00x3 文件大小
++++++++++++++++++++++++++++++++++++++++++++++++
文件的处理:00x1 判断错误
既然是上传就会有错误,比如如下图所示的错误:

<?php
header("content-type:text/html;charset=utf-8");
echo "<pre>";
print_r($_FILES);
$tem_file = $_FILES['pic']['tmp_name'];#临时路径
$new_file = "./uploads/".$_FILES['pic']['name'];#要移动的路径。
switch ($_FILES['pic']['error']) {
case 1:
echo "上传的文件超出了限定的值。";
break;
case 2:
echo "上传的文件超出了HTML表单中隐藏域MAX_FILE_SIZE元素所定的最大值。";
break;
case 3:
echo "文件只被不分上传。";
break;
case 4:
echo "没有上传任何文件。";
break;
}
if(move_uploaded_file($tem_file,$new_file)){//如果移动成功就输出上传成功,否则失败
echo "成功上传";
}else{
echo "上传失败";
}
echo "</pre>";
?>
文件的处理:00x2 判断类型
扣出后缀的方法:
<?php
$filename = "./def.txt";
$a = (explode(".",basename($filename)));#basename是取出文件名,explode是将文件名打散成为数组。
echo array_pop($a);#array_pop
?>

限制上传的文件类型
<?php
$x = "./def.txt";
$a = explode(".",basename($x));
$b = array_pop($a);
echo $b;//获取到上传的文件后缀。
$c = array("txt","doc","jpg","swf","rar","zip");
if(!in_array($c,$b)){
echo "<script>alert('抱歉,您上传的文件格式不对。')</script>";
exit;
}else{
echo "格式正确,正在上传...";
}
?>
文件的处理:00x3 随机文件名
$new_file = "./uploads/".date('ymdhis').rand(100,999).".".$houzhui;
最终代码:
前端:
<html>
<body>
<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
uplaod file:<input type="file" name="pic" value="">
<input type="submit" value="uplaod" name="pic">
</form>
</body>
</html>
后端:
<?php
header("content-type:text/html;charset=utf-8");
echo "<pre>";
print_r($_FILES);
$maxfile = "1000000";
$hello = explode(".",basename($_FILES['pic']['name']));
$houzhui = array_pop($hello);
$b = array("jpg","doc","txt","zip");
if (!in_array($houzhui,$b)) {
echo "<script>alert('你上传的文件类型错误')</script>";
exit;
}
if ($_FILES['pic']['size'] > $maxfile){
echo "<script>alert('文件超出了限制')</script>";
exit;
}
//------------------------随机文件名-------------------------
$tem_file = $_FILES['pic']['tmp_name'];#临时路径
$new_file = "./uploads/".date('ymdhis').rand(100,999).".".$houzhui;#要移动的路径。
switch ($_FILES['pic']['error']) {
case 1:
echo "上传的文件超出了限定的值。";
break;
case 2:
echo "上传的文件超出了HTML表单中隐藏域MAX_FILE_SIZE元素所定的最大值。";
break;
case 3:
echo "文件只被不分上传。";
break;
case 4:
echo "没有上传任何文件。";
break;
}
if(move_uploaded_file($tem_file,$new_file)){//如果移动成功就输出上传成功,否则失败
echo "成功上传";
}else{
echo "上传失败";
}
echo "</pre>";
?>
跟着百度学PHP[13]-文件处理 文件后缀验证、设置随机文件名....的更多相关文章
- 跟着百度学PHP[13]-文件上传
PS:上传的时候一定要用POST方法,GET方法不行. 文件上传的entype要改成“mutilpart/form-data”这个编码 <html> <form action=&qu ...
- 跟着百度学PHP[14]-PDO之Mysql的事务处理2
前面所将仅仅是在纯mysql下的讲解,这节就是要将其搬到PDO台面上来了. 将自动提交关闭. SetAttribute下有一个PDO::ATTR_AUTOCOMMIT 将其设置为0即可关闭,如:$pd ...
- 跟着百度学PHP[12]-文件处理 文件 目录
00x1 文件的属性 文件属性 <?php //-------------------------定义大小转换函数--------------- function changesize_dw($ ...
- 跟着百度学PHP[11]-PHP当中的异常处理
首先要说一下常见的三种错误: 1.语法错误 2.运行错误 3.逻辑错误 00x1 错误报告及错误级别 PHP的错误分为三个等级 1.注意(notice) 没有变量a 2.警告(warning) 没 ...
- 跟着百度学PHP[6]超级全局变量
超级全局变量在PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用. 参考文献:http://www.runoob.com/php/php-superglobals ...
- 跟着百度学PHP[4]OOP面对对象编程-6-构造方法(__construct)和构析方法(__destruct)
函数就是成员方法(方法有三:构造方法.成员方法.析构方法) 下面是两种方法. 构造方法和构析方法 00x1 构造方法 构造方法会在创建对象之后自动调用.其名称为__construct <?php ...
- 跟着百度学PHP[9]-session会话
参考:http://www.w3school.com.cn/php/php_sessions.asp session变量用于存储有关用户的会话的信息,或更改用户会话的设置,session变量保存的信息 ...
- 跟着百度学PHP[17]-PHP扩展CURL的POST传输数据
如果是GET的话就不必那么多设置.但是基本需要用到POST就需要用到以下的几个设置选项. <?php $username = "admin"; $password = &qu ...
- 跟着百度学PHP[15]-session回收机制
gc(Garbage Collection 垃圾回收) 在用户访问的时候会生成许多的临时session文件,顾名思义session回收机制就是用来删除这些临时文件的. session.gc_maxli ...
随机推荐
- 为运行SQL Server的虚拟机切换装有DB Logs的最佳实践
上一篇说到虚拟机启动不了, 原因是有一块VHDX的文件找不到了. 解决了这个问题之后, 又遇到了另一个问题, 那就是我的这台SQL Server的虚机启动之后, 我的几个重要database变成了su ...
- vue父组件异步传递prop到子组件echarts画图问题踩坑总结
效果图: 大致思路:考虑到5张图都是折线图,所以准备用一个子组件承接echarts画图,然后父组件通过prop传递不同数据来展示不同的图 踩坑问题: 1.引入line子组件,画了5个元素,但是只显示一 ...
- XMPP键盘订制实现图文混排
在现阶段的通信服务中,各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互 ...
- mysql的安全性机制
MySQL中主要包括两种用户:root用户和普通用户,其中前者为超级管理员,拥有MySQL提供的一切权限:而普通用户则只能拥有创建用户时赋予它的权限. MySQL的安全性机制主要包括权限机制,用户机制 ...
- MySQL服务器安装完之后如何调节性能
原文作者: Peter Zaitsev原文来源: http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server ...
- ORCU浅析之安装和作用
众所周知,在安装Oracle BIEE之前需要安装Oracle RCU(Oracle Repository Creation Utility),美其名曰资料档案库.如果单单的从名称上来说,那就是我们实 ...
- java Socket通信使用BufferedReader和BufferedWriter的注意事项
注意事项:readLine()要求有换行标识,write()要输出换行标识,要调用flush()刷新缓冲区. 以下是取自java socket通信中的一小段代码. BufferedReader rea ...
- SQL语言 之 事务控制
一.概述 事务是一些数据库操作的集合,这些操作由一组相关的SQL语句组成(只能是 DML 语句),它们是一个有机的整体,要么全部成功执行,要么全部不执行.事务时数据库并发控制和恢复技术的基本单位. 事 ...
- 使用Bundle进行VIM插件的管理
http://www.oschina.net/p/vundle git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle ...
- 算法笔记_152:算法提高 扶老奶奶过街(Java)
目录 1 问题描述 2 解决方案 1 问题描述 一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: A :我和E都没有扶老奶奶 B :老奶奶是被 ...