跟着百度学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 ...
随机推荐
- EasyUI-window包含一个iframe,在iframe中如何关闭window
我试过类似$('#win').window('close');报$.data...options无效的错误,我已经引入了js文件,路径没问题,而且在同一个页面,不用iframe是可以关闭的 在ifra ...
- Trie树统计单词前缀
输入 输入的第一行为一个正整数n.表示词典的大小,其后n行,每一行一个单词(不保证是英文单词,也有可能是火星文单词哦).单词由不超过10个的小写英文字母组成,可能存在同样的单词.此时应将其视作不同的单 ...
- (剑指Offer)面试题50:树中两个结点的最低公共祖先
题目: 求树中两个结点的最低公共祖先 思路: 考虑一下几种情况: 1.该树为二叉搜索树 二叉搜索树是排序树,位于左子树点的结点都比父结点小,而位于右子树的结点都比父结点大,只需要从树的根结点开始和两个 ...
- 开源工作流CCBPM中关于解决谷歌等浏览器silverlight的问题
CCBPM的流程设计器和表单设计器.是通过silverlight实现的. 有些用户和学习者在安装完CCFlow,执行流程设计器时,常常会出现提示安装silverlight.明明已经安装了,为什么还会出 ...
- Autofac3 在MVC4中的运用原理
这是一种新的开发模式,注入开发模式,或者叫它IOC模式,说起IOC你可以这样去理解它,它为你的某个实现流出一个注入点,你生产的对象,可以根据你之前的配置进行组合. IOC全称是Inversion o ...
- 企业版证书打包APP发布,安装后闪退问题解决。
企业版证书打包APP发布,安装后闪退问题解决. 我现在就碰到这个问题,只要项目与Swift沾上边的,都会出问题. 如果我们是直接使用开发者证书进行真机调试,那么就不会出现问题,像往常一样好.但如果我们 ...
- FFMPEG,将字幕“烧进”MP4视频中
原文地址:http://blog.csdn.net/ufocode/article/details/75475539 由于mp4容器,不像MKV等容器有自己的字幕流. MKV这种容器的视频格式中,会带 ...
- 用Visual studio2012在Windows8上开发内核驱动监视进程创建
在Windows NT中,80386保护模式的“保护”比Windows 95中更坚固,这个“镀金的笼子”更加结实,更加难以打破.在Windows 95中,至少应用程序I/O操作是不受限制的,而在Win ...
- DataGridView 的单元格的边框、 网格线样式的设定
1) DataGridView 的边框线样式的设定DataGridView 的边框线的样式是通过 DataGridView.BorderStyle 属性来设定的. BorderStyle 属性设定值是 ...
- c# 隐藏Tab控件的标签
public void HideTabcontrolLabel(TabControl tabControl1) { tabControl1.Appearance = TabAppearance.Fla ...