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 相关文章推荐
E路文章系统PHP
Dec 11 PHP
php中cookie的作用域
Mar 27 PHP
PHP 动态随机生成验证码类代码
Apr 09 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
本地计算机无法启动Apache故障处理
Aug 08 PHP
php自动获取关键字的方法
Jan 06 PHP
PHP排序算法类实例
Jun 17 PHP
php简单处理XML数据的方法示例
May 19 PHP
php批量删除操作(数据访问)
May 23 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
ThinkPHP 3使用OSS的方法
Jul 19 PHP
实例讲解PHP验证邮箱是否合格
Jan 28 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 之 没有mysql支持时的替代方案
2006/10/09 PHP
PHP 5.0对象模型深度探索之对象复制
2008/03/27 PHP
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
php中stream(流)的用法
2014/03/25 PHP
php使用GeoIP库实例
2014/06/27 PHP
php截取字符串函数分享
2015/02/02 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
Python列表删除的三种方法代码分享
2017/10/31 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
Python 找出英文单词列表(list)中最长单词链
2020/12/14 Python
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
工商管理实习生自我鉴定范文
2013/12/18 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
社区党员先进事迹
2014/01/22 职场文书
护士毕业生自我鉴定
2014/02/08 职场文书
《自然之道》教学反思
2014/02/11 职场文书
欢迎领导标语
2014/06/27 职场文书
社区敬老月活动总结
2015/05/07 职场文书
学习心得体会
2019/06/20 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
Java基于字符界面的简易收银台
2021/06/26 Java/Android
nginx安装以及配置的详细过程记录
2021/09/15 Servers