php实现文件上传基本验证


Posted in PHP onMarch 04, 2020

本文实例为大家分享了php实现文件上传基本验证的具体代码,供大家参考,具体内容如下

Html部分

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>文件上传</title>
</head>
<body>
 <form action="doupload.php" method="post" enctype="multipart/form-data">
 <input type="file" name="myFile"/>
 <input type="hidden" name="MAX_FILE_SIZE" value="1024">
 <!-- <input type="hidden" name="MAX_FILE_SIZE" value="1024">通过建立隐藏域来控制文件上传的大小
 在页面上进行判断,value是1024kb,这是客户端上设置的限制,最好是服务器做限制 -->
 <input type="submit" value="上传"/>
 </form>
</body>
</html>

PHP服务端部分

<?php 
header("Content-type: text/html; charset=utf-8"); 
 //预定义变量
 //print_r($_FILES);//可以显示错误号,根据错误号来定位错误信息
 $filename=$_FILES['myFile']['name'];
 $type=$_FILES['myFile']['type'];
 $tmp_name=$_FILES['myFile']['tmp_name'];//存储地址
 $error=$_FILES['myFile']['error'];//错误类型
 $size=$_FILES['myFile']['size'];//文件大小
 $filenamemd5=getUniName($filename);
 // $types="jpg";//只能上传图片
 $limitsize="185000";//控制图片大小
 $a=getExt($filename);
 //$getext=getExt($filename);
 //得到文件的扩展名
 function getExt($filename){
 $first=explode(".",$filename); //文件名开始以.分割
 $ext=strtolower(end($first)); //取出数组中的最后一个数组进行返回
 return $ext;
 }
 //文件名以时间戳微秒md5加密的形式出现,确保文件的唯一
 function getUniName(){
 return md5(microtime(true));
 }
 //echo getUniName(); 返回md5加密的数值

 function gettypes($a){
  $array=array(jpg,png,txt);
 $b=in_array($a,$array);
 return $b;
 }

  if($limitsize>=$size){
  if(gettypes($a)){
  if($error==0){
   if (is_uploaded_file($tmp_name)) {
    //将服务器上的临时文件移动到指定目录
    $filename=$filenamemd5.".".getExt($filename);
    $destination="uploads/".$filename;
    if(move_uploaded_file($tmp_name, $destination)){
    //检测这个临时文件是否为post方式
    //返回镇或者假
    echo $filename."---"."文件上传成功";
   }else{
   echo "你不是post上传的,非法操作";
   }
  }else{
   echo "{$filename}文件移动失败";
  }
  }else{
   switch ($error) {
   case 1:
    echo "超过php配置文件upload_max_filesize的值";
    break;

   case 2:
    echo "超过表单max_file_size的值";
    break;
   case 3:
    echo "部分文件被上传";
    break;
   case 4:
    echo "没有文件被上传";
    break;
   case 6:
   case 7:
    echo "未知错误";
   }
  }
  }else{
  echo "只能上传图片";
  }
 }else{
  echo "超出上传文件大小限制";
 }

 ?>

本文已被整理到了《php文件上传操作汇总》 ,更多精彩内容,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP下对字符串的递增运算代码
Aug 21 PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 PHP
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
深入PHP autoload机制的详解
Jun 09 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
PHP中copy on write写时复制机制介绍
May 13 PHP
PHP发送AT指令实例代码
May 26 PHP
PHP7扩展开发之hello word实现方法详解
Jan 15 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 PHP
php实现获取近几日、月时间示例
Jul 06 PHP
PHP实现的多进程控制demo示例
Jul 22 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 PHP
PHP实现文件上传操作和封装
Mar 04 #PHP
PHP实现文件上传后台处理脚本
Mar 04 #PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
Mar 03 #PHP
php+ajax实现文件切割上传功能示例
Mar 03 #PHP
php 输出缓冲 Output Control用法实例详解
Mar 03 #PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 #PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 #PHP
You might like
如何使用php输出时间格式
2013/08/31 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
实现PHP搜索加分页
2016/10/12 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
layui实现数据表格点击搜索功能
2020/03/26 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
python判断正负数方式
2020/06/03 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
《将心比心》教学反思
2014/04/08 职场文书
政治思想表现评语
2014/05/04 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
行政助理岗位职责
2015/02/10 职场文书
副总经理岗位职责范本
2015/04/08 职场文书